用空格替换所有不受支持的字符

时间:2019-04-08 16:00:29

标签: c# .net string

我需要完成以下工作。我有允许的字符列表(用于QB Issues with special characters in QBO API v3 .NET SDK

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
}

我知道如何使用RegEx查找坏字符,但这就像倒退,我不需要查看匹配项。我需要查看不匹配的内容并仅替换那些内容。

2 个答案:

答案 0 :(得分:7)

string Sanitize(string input)
{
    return new string(input.Select(x => goodChars.Contains(x)?x:' ').ToArray());
}

并且正如 vc 74 所建议的那样,最好使用HashSet<char>的goodChars而不是字符串来加快查找速度

答案 1 :(得分:6)

您可以使用带有负图案的Regex

const string pattern = "[^A-Za-z~_-]";

var regex = new Regex(pattern);
string sanitized = regex.Replace(input, " ");

Fiddle

请注意,如果经常使用此代码,则可以将正则表达式存储在静态成员中,以避免为每次调用重新创建(和重新编译)。