使用正则表达式替换字符串

3
我有以下情况:
案例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


1
你的问题与C#无关 - 不管是C#3.0还是其他任何版本。你的问题与.NET有关,正则表达式支持就在其中。在C#中没有正则表达式支持。 - John Saunders
2个回答

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#的习语中,你会有类似这样的代码:
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 + "]");
    }
}

你的程序很好,但是在以下情况中失败了:string text = "X(P)〜%,X(MV)〜%"; string selecteditem = "KP"; string result = Regex.Replace(text, @"〜(\w* [A-Z $])", "〜" + selecteditem); - user372724
哦…将百分号符号%添加到正则表达式模式中。像这样:~(\w*[A-Z$%]) - Leniel Maccaferri

0

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


在编译时,我不知道是“AK”还是“B$”..那么我该如何应用它呢? - user372724

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接