我需要完成以下工作。我有允许的字符列表(这是QBO API v3 .NET SDK中带有特殊字符的 QB 问题)
var goodChars = "ABCD...abcd...~_-...";
void string Sanitize(string input)
{
// TODO: Need to take input and replace all chars not included in "goodChars" with a space
}
Run Code Online (Sandbox Code Playgroud)
我知道如何用RegEx查找坏字符,但这就像倒退一样,我不需要查看匹配项。我需要查看不匹配的内容,并仅替换那些不匹配的内容。
string Sanitize(string input)
{
return new string(input.Select(x => goodChars.Contains(x)?x:' ').ToArray());
}
Run Code Online (Sandbox Code Playgroud)
正如vc 74所建议的那样,最好有一个HashSet<char>goodChars而不是字符串,以加快查找速度
您可以使用带有负模式的正则表达式
const string pattern = "[^A-Za-z~_-]";
var regex = new Regex(pattern);
string sanitized = regex.Replace(input, " ");
Run Code Online (Sandbox Code Playgroud)
请注意,如果经常使用此代码,则可以将正则表达式存储在静态成员中,以避免为每次调用重新创建(和重新编译)。