正则表达式:除了允许的字符外删除所有内容怎么样?

时间:2011-09-04 12:24:14

标签: c# regex

如果我有'xktzMnTdMaaM'之类的字符串,如何删除除'M'和'T'之外的所有内容 - 所以生成的字符串是'MTMM'?提前感谢。

3 个答案:

答案 0 :(得分:19)

var input = "xktzMnTdMaaM";
var output = Regex.Replace(input, "[^MT]", string.Empty);

如果您想要不区分大小写:

var output = Regex.Replace(input, "[^mt]", string.Empty, RegexOptions.IgnoreCase);

答案 1 :(得分:0)

要添加Darin的答案,如果您愿意,可以使用LINQ以不同方式解决此问题:

string.Concat("xktzMnTdMaaM".Where(c => "MT".Contains(c)))

答案 2 :(得分:0)

使用正则表达式从您的问题描述听起来有点矫枉过正。您可以像这样推出手动解决方案:

    public static string RemoveNonMTChars(string str)
    {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < str.Length; i++)
        {
            if (str[i] == 'M' && str[i] == 'T')
            {
                sb.Append(str[i]);
            }
        }

        return sb.ToString();
    }