Ищу решение по замене пробелов на другие, например:

"My Example is interesting".replaceAll(" ", "1"); 

НЕ возвращает "My1Example1is1interesting", а только "My"

Я искал решения также на StackOverflow, но обычно находил «Удаление пробелов из String / URL ...» и т. Д.

Scanner s = new Scanner(System.in);
String in = s.next();
in = in.replaceAll("//s+", "1");
System.out.println(in);
-1
Rafcik 16 Фев 2015 в 12:39

3 ответа

Лучший ответ

Актуальная проблема заключается в том, как вы читаете данные. Scanner.next() читает только одно слово за раз. ТАК, если вы напечатаете прочитанное значение, это на самом деле "My". используйте nextLine(), чтобы прочитать всю строку.

Напечатайте in и проверьте, что он печатает. Он должен печатать My то есть только одно слово, а не слова, разделенные пробелом .

2
TheLostMind 16 Фев 2015 в 09:48

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

 String s = "My Example is interesting";
 String result = s.replaceAll(" ", "");

Это удалит пробелы.

Если вы хотите заменить другим текстом.

String result = s.replaceAll(" ", "My Text");
0
someone 16 Фев 2015 в 09:42

Помните, что объект String неизменен в Java, вы должны присвоить результат новой String:

String res = "My Example is interesting".replaceAll(" ", "1");

Также обратите внимание, поскольку String#replaceAll принимает регулярное выражение в качестве первого параметра, вы можете улучшить регулярное выражение, установив \\s+, который будет работать со строками, имеющими более одного или нескольких пробелов:

String res = "My   Example is     interesting".replaceAll("\\s+", "1");

Обновление: после того, как вы разместили свой код, проблема не в replaceAll, вы должны использовать nextLine вместо next, потому что next считывает только первый полный токен.

2
Maroun 16 Фев 2015 в 09:48