检查并删除字符串中的任何字符

Hel*_*rld 0 c#

我想知道指定一个字符数组的最佳方法是什么,

{
}
[
]
Run Code Online (Sandbox Code Playgroud)

然后检查字符串是否存在,如果它们在那里,则完全删除它们.

        if (compiler.Parser.GetErrors().Count == 0)
        {
            AstNode root = compiler.Parse(phrase.ToLower());
            if (compiler.Parser.GetErrors().Count == 0)
            {
                try
                {
                    fTextSearch = SearchGrammar.ConvertQuery(root, SearchGrammar.TermType.Inflectional);
                }
                catch
                {
                    fTextSearch = phrase;
                }
            }
            else
            {
                fTextSearch = phrase;
            }
        }
        else
        {
            fTextSearch = phrase;
        }

        string[] brackets = brackets = new string[]
        {
            "{",
            "}",
            "[",
            "]"
        };

        string[] errorChars = errorChars = new string[]
        {
            "'",
            "&"
        };

        StringBuilder sb = new StringBuilder();

        string[] splitString = fTextSearch.Split(errorChars, StringSplitOptions.None);

        int numNewCharactersAdded = 0;
        foreach (string itm in splitString)
        {
            sb.Append(itm); //append string
            if (fTextSearch.Length > (sb.Length - numNewCharactersAdded))
            {
                sb.Append(fTextSearch[sb.Length - numNewCharactersAdded]); //append splitting character
                sb.Append(fTextSearch[sb.Length - numNewCharactersAdded - 1]); //append it again
                numNewCharactersAdded++;
            }
        }

        string newString = sb.ToString();
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 11

正则表达式可以更容易地做到这一点:

var result = Regex.Replace(input, @"[[\]()]", "");
Run Code Online (Sandbox Code Playgroud)

使用字符集([...])匹配其中的任何字符并替换为空.Regex.Replace将取代所有比赛.

  • @James No:字符类中的元字符集比外部小得多(例如``[.]`将匹配句点). (2认同)

Tim*_*ter 6

另一种简洁的方法是使用Enumerable.Except获取Chars的集合差异(假设brackets为chars):

String newString = new String(oldString.Except(brackets).ToArray());
Run Code Online (Sandbox Code Playgroud)