2016-08-16 13 views
-1

我有我的应用程序中允许的字符的列表。 。?! 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,'()#$%^ *;:+ = -_C#替换字符串中的所有其他字符,然后列入白名单字符

我想的,如果我的字符串包含其他任何字符,那么上面这将是与的String.Empty 取代我该怎么办呢

+1

顺便说一句:“它将被替换的String.Empty”:你的意思_The整个string_应该被清空或仅非法字符应该被删除? –

+0

只有非法字符。我可以自己做,但一个问题来自同事。所以贴在这里可以导致一个快速解决方案 –

+0

http://stackoverflow.com/questions/16833939/regex-to-match-all-alphanumeric-and-certain-special-characters –

回答

3

如果你允许的字符的列表,我建议对这个列表测试;类似的东西(LINQ的):

// HashSet is efficient to find items O(1) 
    private static HashSet<char> s_Allowed = new HashSet<char>(
    @"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,'()?!#$%^*;:+="); 

    ... 
    string source = "123~~~456"; 

    // "123456" 
    string result = string.Concat(source 
    .Where(c => s_Allowed.Contains(c))); 
+0

非常感谢Dmirty –

1

您可以使用正则表达式替换。试试这个:

public static string formatToken(string token) 
    { 
     //To prevent null exception 
     if (string.IsNullOrWhiteSpace(token)) return token; 

     Regex rgx = new Regex("[^a-zA-Z0-9 .,'()?!#$%*;:+=-_]"); //Maybe some characters need to be scaped. 
     return rgx.Replace(token, ""); 
    } 
+0

感谢Rumpelstick –

相关问题