2016-07-06 89 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; 
相關問題