Я хочу заменить пробелы, окруженные цифрами или числами, на -.
-
, поэтому, если моя строка равна I am Bob 12 12 Это должно быть преобразовано в I am Bob 12-12.
I am Bob 12 12
I am Bob 12-12
Пожалуйста, предложитенекоторые возможные ответы, используя Java.
Java
str = str.replaceAll("(?<=\\d)\\s(?=\\d)", "-");
Он ищет пробел (\\s), перед которым стоит цифра ((?<=\\d)), за которым следует цифра ((?=\\d)), и заменяет этот пробел тире.
\\s
(?<=\\d)
(?=\\d)
Если вы хотите заменить группы последовательных пробелов, измените \\s на \\s+.
\\s+
Решение без регулярных выражений:
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);