仅当在方括号之间没有数字时,我才想将所有方括号替换为输入字符串中的另一个方括号。我写了这个工作示例代码:
string pattern = @"(\{[^0-9]*?\})";
MatchCollection matches = Regex.Matches(inputString, pattern);
if(matches != null)
{
foreach (var match in matches)
{
string outdateMatch = match.ToString();
string updateMatch = outdateMatch.Replace('{', '[').Replace('}', ']');
inputString = inputString.Replace(outdateMatch, updateMatch);
}
}
因此:
string inputString = "{0}/{something}/{1}/{other}/something"
结果将是:
inputString = "{0}/[something]/{1}/[other]/something"
是否可以使用Regex.Replace()方法在一行中执行此操作?
答案 0 :(得分:2)
您可以使用
var output = Regex.Replace(input, @"\{([^0-9{}]*)}", "[$1]");
请参见regex demo。
详细信息
\{
-一个{
字符([^0-9{}]*)
-捕获组1:0个或多个除数字{
和}
以外的字符}
-一个}
字符。替换为[$1]
,第1组的内容用方括号括起来。
答案 1 :(得分:0)
Regex.Replace(input, @"\{0}/\{(.+)\}/\{1\}/\{(.+)}/(.+)", "{0}/[$1]/{1}/[$2]/$3")
答案 2 :(得分:0)
你能做到吗?
Regex.Replace(inputString, @"\{([^0-9]*)\}", "[$1]");
也就是说,捕获“数字”部分,然后只返回用大括号替换的字符串。
不确定这是否正是您所追求的,但这似乎符合问题:)