2017-03-05 86 views
-2

在这个字符串数组下面我有这样的标签:Android的替换字符串不工作

String[] tags = { 
     "<mft:A>", 
     "<mft:S>", 
     "<mft:R>", 
     "</mft:A>", 
     "</mft:S>", 
     "</mft:R>" 
}; 

,我想用这个html标签来替换它们:

String[] replacementHtmlTags = { 
     "<font color=\"red\">", 
     "<font color=\"green\">", 
     "<font color=\"blue\">", 
     "</font>", 
     "</font>", 
     "</font>" 
}; 

现在定义目标和更换后,我的代码不起作用:

String rawParagraph = "11111 <mft:A>22222</mft:A> 33333 <mft:S> 44444 <mft:A> 555555 <mft:S> 66666 </mft:S></mft:A></mft:S><mft:R> 77777 </mft:R>" 

for (int tag = 0; tag < tags.length; tag++) { 
    rawParagraph.replace(tags[tag], replacementHtmlTags[tag]); 
} 
+1

字符串*是不可变的,所以'replace()'返回新的值。它没有(不能)更新当前值。 – Andreas

+0

@Andreas好的,那么我怎样才能替换所有标签使用数组像我的代码? –

+0

@Andreas,谢谢,问题解决了 –

回答

1

我认为你应该按照这个方法bette r可用性和映射:

public static HashMap<String, String> keyVal; 

static { 
    keyVal = new HashMap<String, String>(); 
    keyVal.put("<mft:A>", "<font color=\\red\">"); 
    keyVal.put("<mft:S>", "<font color=\\green\">"); 
    keyVal.put("<mft:R>", "<font color=\\blue\">"); 
    keyVal.put("</mft:A>", "</font>"); 
    keyVal.put("</mft:S>", "</font>"); 
    keyVal.put("</mft:R>", "</font>"); 
} 

public String replaceTag(String replace) { 
    for(String key:keyVal.keySet()) 
     replace=replace.replaceAll(key,keyVal.get(key)); 
    return replace; 
}