我有以下字符串:
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)";
l2
是l
的转换,但带有标记的表达式。此标记的表达包含在s
中。请注意,原始字符串的符号为(
,[
,依此类推
有什么更好的方法呢?
答案 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>");