2017-02-06 33 views
-1

我有一個字符串像Hi @ Rohit123一些混合值。有沒有其他替代特殊字符和數字在給定的字符串在C#

我有一個很長的方法來替換特殊字符並顯示 HiRohit

你能否建議一些替代方法?

我的C#代碼是

string str1 = str.Replace(" ", "").Replace("`", "").Replace("~", "").Replace("!", "") 
          .Replace("@", "").Replace("#", "").Replace("$", "").Replace("%", "").Replace("^", "") 
          .Replace("&", "").Replace("*", "").Replace("(", "").Replace(")", "").Replace("-", "") 
          .Replace("_", "").Replace("=", "").Replace("+", "").Replace("{", "").Replace("}", "") 
          .Replace("|", "").Replace("[", "").Replace("]", "").Replace(":", "").Replace(";", "") 
          .Replace("'", "").Replace(",", "").Replace(".", "").Replace("/", "").Replace("?", "") 
          .Replace(">", "").Replace("<", "").Replace("1", "").Replace("2", "").Replace("3", "") 
          .Replace("4", "").Replace("5", "").Replace("6", "").Replace("7", "").Replace("8", "") 
          .Replace("9", "").Replace("0", ""); 
+1

所以,你想刪除所有非字母字符? – Equalsk

+0

我會看看RegEx以及您可以使用的衆多搜索模式。 – Wheels73

+0

可能的重複[如何從C#中的字符串中獲取字母?](http://stackoverflow.com/questions/7316258/how-to-get-only-letters-from-a-string-in-c) – Equalsk

回答

7

如果你想刪除所有非字母符號:

var s = "Hi @ Rohit123"; 
var result = Regex.Replace(s, @"[^a-zA-Z]+", ""); 

這個正則表達式替換序列,其不^字母符號a-zA-Z空符號+串。

輸出

"HiRohit" 
0

使用foreach循環:

// make an array of your signs 
string[] signs_to_replace = new string[] { " ", "`", "~", "!" ... }; 
// make a placeholder for the string 
string str1 = str; 
// iterate through all of the signs and replace them 
foreach(string sign_to_replace in signs_to_replace) 
    str1 = str1.Replace(sign_to_replace, string.Empty); 

或者使用LINQ:

// make an array of your signs 
char[] chars_to_replace = new char[] { ' ', '`', '~', '!' ... }; 
// create new string of selected characters 
str1 = new string(str1.Where(c => !chars_to_replace.Contains(c))); 

但如果你知道字符的範圍你想要的:(假設「 '0x61至'z'0x7A。那麼它會更容易使用這個Linq

string str1 = new string(str.Where(c => c >= 'a'/*0x61*/ && c <= 'z'/*0x7A*/)); 
// or including capital leters : 
string str1 = new string(str.Where(c => (c >= 'a'/*0x61/* && c <= 'z'/0x7A*/) || (c >= 'A'/*0x41/* && c <= 'Z'/*0x5A*/)); 
相關問題