我有类似的东西" [sex:he|she] took the dog for a walk
"
之后我从用户那里得到性别(男性为2,女性为1)
如果性别是男性,那么我希望文本是"他带着狗去散步"
我怎么能这样做?
我现在所拥有的只是我可以使用小组获得价值
Regex r = new Regex("^(?<name>\\w+):(?<value>\\w+)");
Match m = r.Match("Section1:119900");
Console.WriteLine(m.Groups["name"].Value);
Console.WriteLine(m.Groups["value"].Value);
然而,我无法为其添加括号或使用条件
答案 0 :(得分:0)
您可以捕获每个值并使用MatchEvaluator来处理组。
string inputString = "[sex:he|she] took the dog with [sex:him|her]";
string result = Regex.Replace(inputString, @"\[(?<name>[^:]+):(?<value1>[^\|]+)\|(?<value2>[^\]]+)\]", Evaluator);
评估人员可以用适当的回复取代任何一组:
private string Evaluator(Match match)
{
if (match.Groups["name"].Value == "sex")
{
if (m_IsMale)
{
return match.Groups["value1"].Value;
}
else
{
return match.Groups["value2"].Value;
}
}
// No replacement, return the original value.
return match.Value;
}
以上结果
he took the dog with him
或
she took the dog with her