如何删除特定模式的所有事件?

时间:2018-03-21 18:36:47

标签: c#

假设我有这样的文件:

EN;05;UK;55;EN;66;US;87;US;89;EN;66;UK;87;

我想删除所有EN次出现,因此最终字符串应为:

UK;55;US;87;US;89;UK;87;

我可以使用EN删除string.Replace("EN", "")但是如何删除号码?

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

string output = Regex.Replace(input, "EN\\;\\d{2}\\;", "");

其中input是您的字符串,EN; 05;英国; 55; EN; 66;美国; 87;美国; 89; EN; 66;英国; 87;。

答案 1 :(得分:0)

我会建议不使用RegEx的替代方案。如果缩写后面的数字超过两个字符,这将有效。

    public static string RemoveDataPoints(this string data, string indentifier)
    {
        var temp = "";
        var fields = data.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

        for (int i=0; i<fields.Length; i=i+2)
        {
            if (!fields[i].Equals(indentifier))
            {
                temp += String.Format("{0};{1};", fields[i], fields[i + 1]);
            }
        }

        return temp;
    }

然后致电:

var output = "EN;05;UK;55;EN;66;US;87;US;89;EN;66;UK;87;".RemoveDataPoints("EN");