我有我的应用程序中允许的字符的列表。 。?! 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,'()#$%^ *;:+ = -_C#替换字符串中的所有其他字符,然后列入白名单字符
我想的,如果我的字符串包含其他任何字符,那么上面这将是与的String.Empty 取代我该怎么办呢
我有我的应用程序中允许的字符的列表。 。?! 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,'()#$%^ *;:+ = -_C#替换字符串中的所有其他字符,然后列入白名单字符
我想的,如果我的字符串包含其他任何字符,那么上面这将是与的String.Empty 取代我该怎么办呢
如果你允许的字符的列表,我建议对这个列表测试;类似的东西(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)));
非常感谢Dmirty –
您可以使用正则表达式替换。试试这个:
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, "");
}
感谢Rumpelstick –
顺便说一句:“它将被替换的String.Empty”:你的意思_The整个string_应该被清空或仅非法字符应该被删除? –
只有非法字符。我可以自己做,但一个问题来自同事。所以贴在这里可以导致一个快速解决方案 –
http://stackoverflow.com/questions/16833939/regex-to-match-all-alphanumeric-and-certain-special-characters –