输入:
X(P)~AK,X(MV)~AK
预期产出:
P(curr=AK),MV(curr=AK)
使用C#3.0
我通过使用字符串函数解决(拆分,然后附加等)
寻找更多利基解决方案(如正则表达式)
由于
答案 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;
}