2016-07-06 90 views

回答

0

这应该工作:

var result = new Regex("[^a-zA-Z0-9 ]").Replace(address, string.Empty); 

这仅保留无论在a-ZA-Z0-9white space

你也可以使用LINQ:

var result2 = new String(address.Where(x => char.IsLetterOrDigit(x) 
             || char.IsWhiteSpace(x)).ToArray()); 
+0

最后的' - ':它是干什么用的? –

+0

@PowerPuffGirl究竟是哪一个? – user3185569

+0

为什么倒票? – user3185569

3

试试这个请

string address = "TEXT 3 [email protected]#$%^&*()_}|{\":?> REMOVE ALL SYMBOLS 45"; 

var sb = new StringBuilder(); 
foreach (var c in address) 
{ 
    if (Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)) 
     sb.Append(c); 
} 

var result = sb.ToString(); 

它应该比正则表达式更快。

+0

不知道是否if(c ==''|| Char.IsLetterOrDigit(c))...'不是更好,现在你还允许不需要的制表符或换行符。 –

+0

空间也没有被要求,但他们出现在样本..也我们不知道我们应该考虑奥特文化。所以有很多问题真的:) – tym32167

0

两者都适合我。 我的最终代码:

var addressWithoutEmtySpacesMoreThanOne = Regex.Replace(address, @"\s+", " "); 
var result = new Regex("[^a-zA-Zа-яА-Я0-9 -]").Replace(addressWithoutEmtySpaces, ""); 
customer.Address = result; 
相关问题