Есть ли способ, которым я могу включить пространство указанного c слова как в начале и в конце, используя регулярное выражение - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь отформатировать одно слово в строке и хочу добавить пробел в начале и в конце, если его нет. Есть ли способ добиться того же.

Код:

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

public class Test {

    public static void main(String[] args) {
        String test = "";
        String in = "Hi UimIMAGE [rofl]test IMAGE [rofl] notify the bull";

         test = in.replaceAll("IMAGE \\[(.*?)\\]", "$1");
         //String.format("%1$" + (1) + "s", str);
        System.out.println(test);
    }


} 

На данный момент, если я запускаю это, я вижу, что просто верните меня. Привет Uimrofltest rofl уведомить быка Я вместо этого хотел регулярное выражение, которое добавит пробел до и после моего заданного регулярного выражения, если пробела нет. Есть ли что-нибудь, что я могу сделать без ручного манипулирования строкой. Ожидаемый результат Привет Uim rofl test rofl уведомить быка

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете попробовать использовать String#replaceAll здесь:

String in = "Hi UimIMAGE [rofl]test IMAGE [rofl] notify the bull";
String out = in.replaceAll("\\s*IMAGE \\[(.*?)\\]\\s*", " $1 ");
System.out.println(in);
System.out.println(out);

Это печатает:

Hi UimIMAGE [rofl]test IMAGE [rofl] notify the bull
Hi Uim rofl test rofl notify the bull

Идея регулярного выражения заключается в захвате IMAGE [something] тегов, а затем замене на только содержимое в квадратных скобках. Обратите внимание, что мы также фиксируем любые необязательные пробелы на обоих концах, а затем добавляем замену только одним пробелом на обоих концах, чтобы избежать нежелательных лишних пробелов.

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