Ищу решение по замене пробелов на другие, например:
"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);
3 ответа
Актуальная проблема заключается в том, как вы читаете данные. Scanner.next()
читает только одно слово за раз. ТАК, если вы напечатаете прочитанное значение, это на самом деле "My"
. используйте nextLine()
, чтобы прочитать всю строку.
Напечатайте in
и проверьте, что он печатает. Он должен печатать My
то есть только одно слово, а не слова, разделенные пробелом .
Вы должны присвоить результат другой переменной.
String s = "My Example is interesting";
String result = s.replaceAll(" ", "");
Это удалит пробелы.
Если вы хотите заменить другим текстом.
String result = s.replaceAll(" ", "My Text");
Помните, что объект 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
считывает только первый полный токен.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.