2010-09-08 51 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>");