Удалить лишние пробелы из строки - PullRequest
7 голосов
/ 14 апреля 2011

Я хочу удалить лишние пробелы, используя VB.net

ех.

"The   Quick          Brown Fox"

Я хочу вывод

"The Quick Brown Fox"

Спасибо, inchika

Ответы [ 4 ]

22 голосов
/ 14 апреля 2011

Для этого вы можете использовать простое регулярное выражение:

Dim cleaned As String = Regex.Replace(input, "\s{2,}", " ")
6 голосов
/ 13 августа 2014

Я понимаю, что этот вопрос довольно старый, но есть еще один вариант, который не предусматривает регулярное выражение или циклическое переключение строки и замену вручную:

Private Function StripSpaces(input As String) As String
    Return String.Join(" ", input.Split(New Char() {}, StringSplitOptions.RemoveEmptyEntries))
End Function

И эквивалент C #:

private string StripSpaces(string input)
{
    return string.Join(" ", input.Split((char[])null, StringSplitOptions.RemoveEmptyEntries));
}

Использование значения «null» в качестве символа разделения на String.Split приводит к тому, что символом разделения будут все символы, возвращающие значение true, если они были отправлены на Char.IsWhiteSpace.Таким образом, вызов метода таким образом разделит вашу строку на все пробелы, удалит пустые строки, а затем снова объединит его вместе с одним пробелом между каждым элементом разделения массива.

4 голосов
/ 14 апреля 2011

То, что вы на самом деле хотите, - это сжать любое несколько пробелов в один пробел, и один из способов сделать это - найти два пробела и заменить их одним пробелом, пока не останется два смежных пробела, что-то вроде это:

   Dim myString As String = "The   Quick     Brown     Fox"
   While myString.IndexOf("  ") <> -1
       myString = myString.Replace("  ", " ")
   End While
   Console.WriteLine(myString)

Однако это не защищает от ошибок из-за некоторых идеосинкразий .net строк , это может войти в бесконечный цикл, но только для некоторых очень странных входных данных.


РЕДАКТИРОВАТЬ: Эта конкретная обработка быстрее (и проще) с использованием регулярного выражения, как указано в других ответах.

3 голосов
/ 14 апреля 2011

Попробуйте это:

Dim output As String = Regex.Replace("The   Quick          Brown Fox","\\s+" , " ")
...