Регулярное выражение Java для замены всех пробелов, окруженных цифрами, символом - PullRequest
0 голосов
/ 27 февраля 2012

Я хочу заменить пробелы, окруженные цифрами или числами, на -.

, поэтому, если моя строка равна I am Bob 12 12 Это должно быть преобразовано в I am Bob 12-12.

Пожалуйста, предложитенекоторые возможные ответы, используя Java.

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012
str = str.replaceAll("(?<=\\d)\\s(?=\\d)", "-");

Он ищет пробел (\\s), перед которым стоит цифра ((?<=\\d)), за которым следует цифра ((?=\\d)), и заменяет этот пробел тире.

Если вы хотите заменить группы последовательных пробелов, измените \\s на \\s+.

0 голосов
/ 27 февраля 2012

Решение без регулярных выражений:

String in = "I am Bob 12 12";
int last = in.length()-1;
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append(in.charAt(0));  // assumes, the String has at least one char

for (int i = 1; i < last-1; i++) {
  if (in.charAt(i) == ' ' && 
        Character.isDigit(in.charAt(i-1)) && 
        Character.isDigit(in.charAt(i+1))) {
     resultBuilder.append('-');
  } else {
     resultBuilder.append(in.charAt(i));
  }
}
resultBuilder.append(in.charAt(last));
// System.out.println(resultBuilder);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...