Удалить пробел перед пунктуацией в Java - PullRequest
4 голосов
/ 03 августа 2011

У меня есть строка

"This is a big sentence .  !  ?  !  but I have to remove the space ."   

В этом предложении я хочу удалить все пробелы, предшествующие пунктуации, и должно стать

"This is a big sentence.!?!  but I have to remove the space."   

Я пытаюсь использовать "\p{Punct}"но не может заменить в строке.

Ответы [ 3 ]

10 голосов
/ 03 августа 2011

Вы должны использовать положительный прогноз :

newStr = str.replaceAll("\\s+(?=\\p{Punct})", "")

ideone.com демо для вашей конкретной строки

Разбивка выражения:

  • \s: пробел ...
  • (?=\\p{Punct}) ... с последующей пунктуацией.
1 голос
/ 03 августа 2011

Попробуйте это регулярное выражение, чтобы найти все пробелы перед пунктуацией: \s+(?=\p{Punct}) (Java String: "\\s+(?=\\p{Punct})")

0 голосов
/ 03 августа 2011

Вы можете использовать группу и ссылаться на нее в замещающей строке:

String text = "This is a big sentence . ! ? ! but I have to remove the space .";
String replaced = text.replaceAll("\\s+(\\p{Punct})", "$1")

Здесь мы фиксируем пунктуацию в группе с (\\p{Punct}) и заменяем всю совпадающую строку на группу (названную * 1005).*).

В любом случае, мой ответ - просто любопытство: я думаю, что @aioobe ответ лучше:)

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