Страницы

Поиск по вопросам

вторник, 7 января 2020 г.

Как удалить лишние пробелы в строке(StringBuffer)

#java


Как удалить лишние пробелы в строке, если она типа StringBuffer? Важно не использовать
переход в String.

допустим строка: 

StringBuffer str = new StringBuffer("this        is   а    test message");


должна превратиться в: 

"this is a test message"

    


Ответы

Ответ 1



Пробегаем по StringBuffer и перемещаем в начало все непробельные символы. Если встречаем пробел, и он идет первым, также перемещаем его и запоминаем индекс. Все последующие пробелы игнорируем. При встрече непробельного символа сбрасываем индекс пробела. static void removeWhiteSpaces(StringBuffer sb) { int end = 0; int spaceIndex = -1; for (int i = 0; i < sb.length; i++) { if (!Character.isWhitespace(sb.charAt(i))) { sb.setCharAt(end++, sb.charAt(i)); spaceIndex = -1; } else if (spaceIndex < 0) { sb.setCharAt(end++, sb.charAt(i)); spaceIndex = i; } } sb.setLength(end); }

Комментариев нет:

Отправить комментарий