只有当输入字符串中没有数字时,我才想将所有括号替换为另一个括号。我编写了这个工作代码示例:
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() 方法在一行中完成此操作?
最佳答案
您可以使用
var output = Regex.Replace(input, @"\{([^0-9{}]*)}", "[$1]");
请参阅regex demo .
详细信息
\{
- 一个{
字符([^0-9{}]*)
- 捕获组 1:除数字、{
和}
之外的 0 个或多个字符>}
- 一个}
字符。
替换为 [$1]
,即用方括号括起来的第 1 组的内容。
关于c# - 正则表达式 - 在特定情况下替换 C# 字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009101/