用正则表达式替换字符串

时间:2010-08-12 02:45:35

标签: c# .net regex replace

我有以下情况

案例1:

输入: X(P)~AK,X(MV)~AK

替换为: AP

输出: X(P)~AP,X(MV)~AP

案例2:

输入: X(PH)~B$,X(PL)~B$,X(MV)~AP

替换为USD$

输出: X(PH)~USD$,X(PL)~USD$,X(MV)~USD$

可以证明,~<string>总是会被取代。

是否可以通过正则表达式实现相同的目标?

注意:〜除结构外,在编译时不会知道任何内容。一个典型的结构

就像

X(<Variable Name>)~<Variable Name>

我正在使用C#3.0

2 个答案:

答案 0 :(得分:5)

这个简单的正则表达式将会这样做:

~(\w*[A-Z$])

你可以在这里测试一下:

http://regexhero.net/tester/

选择RegexHero上的替换选项卡。

输入~(\w*[A-Z$])作为正则表达式。

输入~AP作为替换字符串。

输入X(P)~AK,X(MV)~AK作为目标字符串。

你会得到这个作为输出:

X(P)~AP,X(MV)~AP

在C#idiom中,你会有这样的事情:

class RegExReplace
{
    static void Main()
    {
        string text = "X(P)~AK,X(MV)~AK";

        Console.WriteLine("text=[" + text + "]");

        string result = Regex.Replace(text, @"~(\w*[A-Z$])", "~AP");

        // Prints: [X(P)~AP,X(MV)~AP]
        Console.WriteLine("result=[" + result + "]");

        text = "X(PH)~B$,X(PL)~B$,X(MV)~AP";

        Console.WriteLine("text=[" + text + "]");

        result = Regex.Replace(text, @"~(\w*[A-Z$])", "~USD$");

        // Prints: [X(PH)~USD$,X(PL)~USD$,X(MV)~USD$]
        Console.WriteLine("result=[" + result + "]");
    }
}

答案 1 :(得分:0)

为什么不使用string.Replace(string,string)?