从旧字符串创建新字符串,C#

时间:2010-08-12 08:18:43

标签: regex c#-3.0 replace

输入:

X(P)~AK,X(MV)~AK

预期产出:

P(curr=AK),MV(curr=AK)

使用C#3.0

我通过使用字符串函数解决(拆分,然后附加等)

寻找更多利基解决方案(如正则表达式)

由于

2 个答案:

答案 0 :(得分:7)

var output = Regex.Replace(input, @"X\(([A-Z]+)\)~([A-Z]+)", "$1(curr=$2)");

这会将所有X(something1)~something2替换为something1(curr=something2)。所有“某事”都被假定为大写字符序列。

答案 1 :(得分:1)

使用正则表达式的可能解决方案。这不是最干净的,但你可以离开这里。

string process(string s)
{
    string ret = "";
    System.Text.RegularExpressions.Regex r = new Regex(@"X\(([A-Z]+)\)~([^,]+)\,?");
    bool first = true;
    foreach (Match m in r.Matches(s))
    {
        ret += (first ? "" : ",") + m.Groups[1] + "(curr=" + m.Groups[2] + ")";
        first = false;
    }
    return ret;
}