Заменить несколько подстрок между разделителями в Java - PullRequest
0 голосов
/ 07 июня 2018

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

String str1 = "could be";
String str2 = "bigger";

и я хочу преобразовать эту строку:

String toConvert = "I ||am|| a ||small|| string.";

в эту:

"I could be a bigger string."

Как я могусделать это на Java?

1 Ответ

0 голосов
/ 07 июня 2018

Из комментарий :

но если я не знаю текст между разделителями?

Так что, похоже, значения замены позиционный .

Лучший способ сделать это - регулярное выражение appendReplacement loop:

public static String replace(String input, String... values) {
    StringBuffer buf = new StringBuffer();
    Matcher m = Pattern.compile("\\|{2}(.*?)\\|{2}").matcher(input);
    for (int i = 0; m.find(); i++)
        m.appendReplacement(buf, (i < values.length ? values[i] : m.group(1)));
    return m.appendTail(buf).toString();
}

Test

String toConvert = "I ||am|| a ||small|| string.";
System.out.println(replace(toConvert, "could be")); // "small" is retained without markers
System.out.println(replace(toConvert, "could be", "bigger"));
System.out.println(replace(toConvert, "could be", "bigger", "better")); // "better" is ignored

Выход

I could be a small string.
I could be a bigger string.
I could be a bigger string.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...