我正在构建一个由连字符分隔的姓氏字符串。有时一个空格会被抓到那里。我需要从最终结果中删除所有空格。
要处理的示例字符串:
Anderson -Reed-Smith
它需要最终成为(安德森之后没有空间):
安德森 - 里德 - 史密斯
姓氏字符串位于字符串变量LastName。
我正在使用正则表达式:
Regex.Replace(LastName, @"[\s+]", "");
结果是:
Anderson -Reed-Smith。
我也尝试过:
Regex.Replace(LastName, @"\s+", "");
和
Regex.Replace(LastName, @"\s", "");
我做错了什么?
答案 0 :(得分:120)
而不是RegEx
使用Replace
来表示简单的事情:
LastName = LastName.Replace(" ", String.Empty);
答案 1 :(得分:50)
Regex.Replace
不会修改它的第一个参数(回想一下,字符串在.NET中是不可变的)所以调用
Regex.Replace(LastName, @"\s+", "");
保持LastName
字符串不变。你需要这样称呼它:
LastName = Regex.Replace(LastName, @"\s+", "");
所有三个正则表达式都有效。但是,第一个正则表达式也将删除所有加号字符,我想这将是无意的。
答案 2 :(得分:12)
不需要正则表达式。这也将删除制表符,换行符等
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
。
答案 3 :(得分:1)
执行此操作的最快速和最常用的方法(行终止符,标签也将被处理)。正则表达式强大的工具并不真正需要解决这个问题,但正则表达式会降低性能。
new string
(stringToRemoveWhiteSpaces
.Where
(
c => !char.IsWhiteSpace(c)
)
.ToArray<char>()
)
OR
new string
(stringToReplaceWhiteSpacesWithSpace
.Select
(
c => char.IsWhiteSpace(c) ? ' ' : c
)
.ToArray<char>()
)
答案 4 :(得分:0)
使用REGEX,您可以删除字符串中的空格。
以下名称空间是必需的。
using System.Text.RegularExpressions;
语法:
Regex.Replace(text, @"\s", "")
答案 5 :(得分:0)
您可以这样写,例如电话号码:
private static string GetFormattedPhoneNumber(string phoneNumber)
=> string.IsNullOrEmpty(phoneNumber) ? string.Empty
: Regex.Replace(phoneNumber, @"[+,\-,\(,\), \s+]*", string.Empty);
static void Main(string[] args)
{
Console.WriteLine(GetFormattedPhoneNumber("+375 (24) 55-333 "));
}
/*
Output: 3752455333
*/
答案 6 :(得分:-1)
下面是将文件名中的空格替换为给定URL的代码,我们也可以使用string.empty而不是“〜”来删除它。
if (!string.IsNullOrEmpty(url))
{
string origFileName = Path.GetFileName(url);
string modiFileName = origFileName.Trim().Replace(" ", "~");
url = url.Replace(origFileName , modiFileName );
}
return url;
答案 7 :(得分:-3)
为什么在只使用Trim()方法时使用Regex
Text='<%# Eval("FieldDescription").ToString().Trim() %>'
OR
string test = "Testing ";
test.Trim();