Как удалить указанную строку оптимизированным способом? - PullRequest
1 голос
/ 27 мая 2019

Привет, у меня проблема с удалением некоторых нежелательных символов из строки. Например, если строка Hi Uim IMAGE [rofl] test , тогда я хочу, чтобы она была похожа на Hi Uim rofl test . Я не хочу жестко закодировать IMAGE [и затем снова закрытие], используя замену строки. Вместо IMAGE в ALLCAPS может быть любое слово.

Я написал что-то подобное ниже, но предпочел бы, чтобы это можно было сделать лучше.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {
        String test = "";
        String in = "Hi Uim IMAGE [rofl] test IMAGE [rofl] notify the bull";
        String[] split = in.split("IMAGE \\[(.*?)\\]");
        System.out.println(split);
        Pattern p = Pattern.compile("IMAGE \\[(.*?)\\]");
        Matcher m = p.matcher(in);
        int i = 0;
        while (m.find()) {
            String group = m.group(1);
            System.out.println(group);
            test = test + split[i++] + group;
        }
        for (int var = i; var < split.length; var++) {
            test = test + split[var];
        }
        System.out.println(test);
    }

}

Это проблема, как будто я должен пройти через это. Есть ли лучший способ сделать это.

1 Ответ

2 голосов
/ 27 мая 2019

Вы можете использовать

in = in.replaceAll("\\b[A-Z]+\\s*\\[([^\\]\\[]*)]", "$1");

См. Демоверсию regex

Regex details

  • \b[A-Z]+ - граница слова и 1+ прописные буквы ASCII
  • \s* - 0+ пробелов
  • \[ - [ char
  • ([^\]\[]*) - Группа 1 ($1): любые 0+ символов, кроме [ и ]
  • ] - ] char.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...