我正在构建一个由连字符分隔的姓氏字符串.有时一个空格会被抓到那里.我需要从最终结果中删除所有空格.
要处理的示例字符串:
安德森 - 里德史密斯
它需要最终成为(安德森之后没有空间):
安德森 - 里德 - 史密斯
姓氏字符串位于字符串变量LastName中.
我正在使用正则表达式:
Regex.Replace(LastName, @"[\s+]", "");
Run Code Online (Sandbox Code Playgroud)
结果是:
安德森 - 里德史密斯.
我也尝试过:
Regex.Replace(LastName, @"\s+", "");
Run Code Online (Sandbox Code Playgroud)
和
Regex.Replace(LastName, @"\s", "");
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Gab*_*abe 126
取而代之的是中RegEx使用Replace的东西,很简单:
LastName = LastName.Replace(" ", String.Empty);
Run Code Online (Sandbox Code Playgroud)
das*_*ght 52
Regex.Replace 不修改它的第一个参数(回想一下,字符串在.NET中是不可变的)所以调用
Regex.Replace(LastName, @"\s+", "");
Run Code Online (Sandbox Code Playgroud)
保持LastName字符串不变.你需要像这样调用它:
LastName = Regex.Replace(LastName, @"\s+", "");
Run Code Online (Sandbox Code Playgroud)
你的所有三个正则表达式都有效.但是,第一个正则表达式也将删除所有加号字符,我想这将是无意的.
I4V*_*I4V 12
不需要正则表达式.这也将删除标签,换行符等
var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c)));
Run Code Online (Sandbox Code Playgroud)
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.