Как удалить лишние пробелы в строке, если она типа StringBuffer? Важно не использовать переход в String
допустим строка:
StringBuffer str = new StringBuffer("this is а test message");
должна превратиться в:
"this is a test message"
Ответ
Пробегаем по 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);
}
Комментариев нет:
Отправить комментарий