我必须用[和]替换字符串中的所有{和}括号。
但我有一个{在开始时和一个}在字符串的最末端无法改变。
我如何在C#中执行此操作?
答案 0 :(得分:3)
可能有很多方法可以做到这一点,包括全部替换它们并将第一个/最后一个替换回原始值,但这里有一个Regex替换方法,它将替换除第一个{和最后一个}之外的所有大括号。
您可以在LINQPad
中对此进行测试void Main()
{
string input = "{ a{b}c }";
int indexOfFirstBrace = input.IndexOf('{');
int indexOfLastBrace = input.LastIndexOf('}');
string output = Regex.Replace(input, "[{}]", match =>
{
if (match.Index == indexOfFirstBrace || match.Index == indexOfLastBrace)
return match.Value;
if (match.Value == "{")
return "[";
return "]";
});
output.Dump();
}
输出:
{ a[b]c }
这是另一种方法,可以将字符串解构为字符数组,收集所有字符并构建另一个字符串,逐个字符地进行替换。
string output = new string(input
.Select((c, i) =>
i == indexOfFirstBrace || i == indexOfLastBrace ? c
: c == '{' ? '['
: c == '}' ? ']'
: c)
.ToArray());
答案 1 :(得分:-1)
[TestMethod]
public void Replace()
{
string before = "{{{abc}}";
string expect = "{[[abc]}";
string calc = '{' + before.Substring(1, before.Length - 2).Replace('{', '[').Replace('}', ']') + '}';
Assert.AreEqual(expect, calc);
}