2010-09-08 54 views
1

我有以下字符串:串危险符号转化

String l = "1. [](a+b)\n2. (-(q)*<>(r))\n3. 00(d)\n4. (a+-b)"; 
String s = "1. [](a+b)\n2. 00(d)" 

第一字符串是expresions列表。 Sencond字符串是第一个字符串的expresions子集,但它们的number-id不等于。

然后,我想这样做:

String l2 = "1. <b>[](a+b)</b>\n2. (-(q)*<>(r))\n3. <b>00(d)</b>\n4. (a+-b)"; 

l2l但标表达式转换。此标记的表达式包含在s中。请注意,原始字符串的符号为([,依此类推 要做到这一点,最好的方法是什么?

+0

就这样,我知道我在看什么,什么是危险符号? – 2010-09-08 09:05:19

+0

元字符'('''','['等等 – barroco 2010-09-08 09:10:52

回答

2

如果我理解正确的话,你的问题是北京时间

String.replaceAll(String, String) 

这里行不通,因为人物([\,在正则表达式特殊的含义。

也许你可以只使用

String.replace(CharSequence target, CharSequence replacement) 

那么你并不需要在所有的处理正则表达式。

+0

我知道它,常规表达式是问题 – barroco 2010-09-08 15:15:09

+1

@ isola009:只是想承认使用replace()应该可以正常工作 – 2010-09-08 20:19:34

+0

@ isola009:不需要任何正则表达式来实现这一点,只需使用replace()。 – fabstab 2010-09-09 11:45:28

0
String l = "1. [](a+b)\n2. (-(q)*<>(r))\n3. 00(d)\n4. (a+-b)"; 
    String s = "1. [](a+b)\n2. 00(d)"; 

    String[] a=l.split("\\n"); 
    for(int i=0;i<a.length;i++) 
     a[i]=a[i].split("\\d. ")[1]; 
    String[] b=s.split("\\n"); 
    for(int i=0;i<b.length;i++) 
     b[i]=b[i].split("\\d. ")[1]; 

    for(int i=0;i<b.length;i++) 
     l=l.replace(b[i], "<b>"+b[i]+"</b>");