Ответ 1
Вместо RegEx
используйте Replace
для чего-то простого:
LastName = LastName.Replace(" ", String.Empty);
Я строю строку имен, разделенных дефисом. Иногда туда попадает пробел. Мне нужно удалить все пробелы из конечного результата.
Пример строки для работы над:
Андерсон-Рид-Смит
Ему нужно закончить (без пробега после Андерсона):
Андерсон-Рид-Смит
Строка имени находится в строковой переменной LastName.
Я использую регулярное выражение:
Regex.Replace(LastName, @"[\s+]", "");
Результат:
Андерсон-Рид-Смит.
Я также пробовал:
Regex.Replace(LastName, @"\s+", "");
и
Regex.Replace(LastName, @"\s", "");
Что я делаю неправильно?
Вместо RegEx
используйте Replace
для чего-то простого:
LastName = LastName.Replace(" ", String.Empty);
Regex.Replace
не изменяет свой первый аргумент (напомним, что строки неизменяемы в .NET), поэтому вызов
Regex.Replace(LastName, @"\s+", "");
оставляет строку LastName
неизменной. Вам нужно вызвать его так:
LastName = Regex.Replace(LastName, @"\s+", "");
Все три ваших регулярных выражения работали бы. Однако первое регулярное выражение удалит все символы плюс, что, я думаю, будет непреднамеренным.
Нет необходимости в регулярном выражении. Это также удалит вкладки, новые строки и т.д.
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
.
Самый быстрый и общий способ сделать это (также будут обрабатываться терминаторы строк, вкладки). Regex мощные средства действительно не нужны для решения этой проблемы, но Regex может снизить производительность.
new string
(stringToRemoveWhiteSpaces
.Where
(
c => !char.IsWhiteSpace(c)
)
.ToArray<char>()
)
ИЛИ
new string
(stringToReplaceWhiteSpacesWithSpace
.Select
(
c => char.IsWhiteSpace(c) ? ' ' : c
)
.ToArray<char>()
)
Ниже приведен код, который заменил бы пустое пространство от имени файла на заданный URL-адрес, а также мы можем удалить его с помощью string.empty вместо "~"
if (!string.IsNullOrEmpty(url))
{
string origFileName = Path.GetFileName(url);
string modiFileName = origFileName.Trim().Replace(" ", "~");
url = url.Replace(origFileName , modiFileName );
}
return url;
Зачем использовать Regex, когда вы можете просто использовать метод Trim()
Text='<%# Eval("FieldDescription").ToString().Trim() %>'
ИЛИ
string test = "Testing ";
test.Trim();