Струнное преобразование с символами опасности - PullRequest
1 голос
/ 08 сентября 2010

У меня есть следующая строка:

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

Первая строка - это список выражений.Вторая строка является подмножеством выражений первой строки, но их числовые идентификаторы не равны.

Затем я хочу сделать это:

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

l2 - это преобразованиеl но с отмеченными выражениями.Это отмеченные выражения содержатся в s.Обратите внимание, что строки оригиналов имеют символы (, [ и т. Д. Как лучше это сделать?

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Если я правильно вас понимаю, ваша проблема в том, что

String.replaceAll(String, String)

здесь не работает, потому что символы (, [, \ имеют специальные значения в регулярных выражениях.

Может быть, вы могли бы просто использовать

String.replace(CharSequence target, CharSequence replacement)

Тогда вам вообще не нужно иметь дело с регулярными выражениями.

0 голосов
/ 09 сентября 2010
    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>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...