Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Функция для удаления лишних пробелов из строки


Автор: RUVATA 17.1.2011, 10:58
Всем доброго времени суток...
Подскажите существует ли в языке vb.NET встроенная функция для удаления лишних пробелов из строки (не только в конце и начале как Trim, а чтобы и в теле оставляла лишь по одному пробелу разделяющему слова)
Вроде перечитал все описания методов String но ничего не нашел...

Автор: jonie 17.1.2011, 11:14
RUVATA, String.Replace('  ', ' ') ?

Автор: Kaerus 17.1.2011, 12:44
Скорее так
Код

Regex.Replace(s, " +", " ")

Автор: RUVATA 20.1.2011, 08:57
" +"
что это... в моем понимании это символ пробела и символ знака сложения (строка)
или такая конструкция имеет особый смысл?

Автор: jonie 20.1.2011, 11:11
RUVATA, это регулярное выражение вам нарисовали.

Автор: korob2001 25.1.2011, 14:40
Код

string str = "          This           is     a           test                string";
str = str.Trim();
str = Regex.Replace(str, "\\s+", " ");


PS: Вообще-то в регулярном выражении, пробельный символ обозначается так \s. Если честно, запускать код с выражением " +" ещё не пробовал, как приеду домой попробую, итереса ради.

Автор: Kaerus 25.1.2011, 18:57
korob2001
Как ты наверное знаешь класс \s кроме пробела содержит еще табуляцию и http://msdn.microsoft.com/ru-ru/library/20bw873z.aspx#WhitespaceCharacter.
Здесь говорилось только об удаление пробелов.

Цитата(korob2001)
Если честно, запускать код с выражением " +" ещё не пробовал, как приеду домой попробую, итереса ради.

Не забудь об успехах сообщить

P.S.
Для удобства можно этот метод сделать http://msdn.microsoft.com/ru-ru/library/bb383977.aspx

Автор: korob2001 25.1.2011, 19:21
В вопросе сказано, что он хочет получить на выходе. Строку, в которой между словами должно быть по одному пробелу. Не думаю, что табуляцию, а уж тем более остальные пробельные символы, нужно оставлять при таком условии.

Автор: Machaon 21.3.2011, 17:26
Код

 Dim DeleteSpaces As New Regex("\s+")
text = DeleteSpaces.Replace(Текст с лишними пробелами и символами табуляции, " ")

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)