如何避免使用多个regex.replace

时间:2015-10-28 20:01:13

标签: c# regex

目标是接收一个文本文件,将其标准化为仅包含所有大写字母,删除所有特殊字符,并将任何新行转换为单个空格。

这是我当前的混乱代码,据我所知它确实有用。

public string readTextFile(string fileName)
{
    Regex rgx = new Regex("[^A-Z ]");
    string txtFile = File.ReadAllText(fileName).ToUpper();

    txtFile = Regex.Replace(txtFile, @"\s+", " ", RegexOptions.Multiline);
    return rgx.Replace(txtFile, "");
}

寻找任何人帮助清理此代码,提高效率,并可能将我的正则表达式语句合并为一个。

1 个答案:

答案 0 :(得分:1)

您可以合并正则表达式,并像这样使用Replace method with MatchEvaluator

public string readTextFile(string fileName)
{
    Regex rgx = new Regex("");
    string txtFile = File.ReadAllText(fileName).ToUpper();

    txtFile = Regex.Replace(txtFile, @"(\s+)|([^A-Z ])", 
                m=> m.Groups[2].Success ? string.Empty : " ",
                RegexOptions.Multiline);
    return txtFile;
}