字符串转换与危险符号

时间:2010-09-08 08:48:45

标签: java regex

我有以下字符串:

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

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

然后,我想这样做:

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

l2l的转换,但带有标记的表达式。此标记的表达包含在s中。请注意,原始字符串的符号为([,依此类推 有什么更好的方法呢?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你的问题就是那个

String.replaceAll(String, String)

在此处不起作用,因为字符([\在正则表达式中具有特殊含义。

也许你可以使用

String.replace(CharSequence target, CharSequence replacement)

然后你根本不需要处理正则表达式。

答案 1 :(得分: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>");