Подтвердить что ты не робот

Удалите все пробелы из строки С# с регулярным выражением

Я строю строку имен, разделенных дефисом. Иногда туда попадает пробел. Мне нужно удалить все пробелы из конечного результата.

Пример строки для работы над:

Андерсон-Рид-Смит

Ему нужно закончить (без пробега после Андерсона):

Андерсон-Рид-Смит

Строка имени находится в строковой переменной LastName.

Я использую регулярное выражение:

Regex.Replace(LastName, @"[\s+]", "");

Результат:

Андерсон-Рид-Смит.

Я также пробовал:

Regex.Replace(LastName, @"\s+", "");

и

Regex.Replace(LastName, @"\s", "");

Что я делаю неправильно?

4b9b3361

Ответ 1

Вместо RegEx используйте Replace для чего-то простого:

LastName = LastName.Replace(" ", String.Empty);

Ответ 2

Regex.Replace не изменяет свой первый аргумент (напомним, что строки неизменяемы в .NET), поэтому вызов

Regex.Replace(LastName, @"\s+", "");

оставляет строку LastName неизменной. Вам нужно вызвать его так:

LastName = Regex.Replace(LastName, @"\s+", "");

Все три ваших регулярных выражения работали бы. Однако первое регулярное выражение удалит все символы плюс, что, я думаю, будет непреднамеренным.

Ответ 3

Нет необходимости в регулярном выражении. Это также удалит вкладки, новые строки и т.д.

var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c)));

Символы WhiteSpace: 0009 , 000a , 000b , 000c , 000d , 0020 , 0085 , 00a0 , 1680 , 180e , 2000 , 2001 , 2002 , 2003 , 2004 , 2005 , 2006 , 2007 , 2008 , 2009 , 200a , 2028 , 2029 , 202f , 205f , 3000.

Ответ 4

Самый быстрый и общий способ сделать это (также будут обрабатываться терминаторы строк, вкладки). Regex мощные средства действительно не нужны для решения этой проблемы, но Regex может снизить производительность.

                       new string
                           (stringToRemoveWhiteSpaces
                                .Where
                                (
                                    c => !char.IsWhiteSpace(c)
                                )
                                .ToArray<char>()
                           )

ИЛИ

                       new string
                           (stringToReplaceWhiteSpacesWithSpace
                                .Select
                                (
                                    c => char.IsWhiteSpace(c) ? ' ' : c
                                )
                                .ToArray<char>()
                           )

Ответ 5

Ниже приведен код, который заменил бы пустое пространство от имени файла на заданный URL-адрес, а также мы можем удалить его с помощью string.empty вместо "~"

  if (!string.IsNullOrEmpty(url))
          {
           string origFileName = Path.GetFileName(url);
           string modiFileName = origFileName.Trim().Replace(" ", "~");
           url = url.Replace(origFileName , modiFileName );
          }
          return url;

Ответ 6

Зачем использовать Regex, когда вы можете просто использовать метод Trim()

Text='<%# Eval("FieldDescription").ToString().Trim() %>'

ИЛИ

string test = "Testing    ";
test.Trim();