C# 替换字符串中的括号
我必须将字符串中的所有C# 替换字符串中的括号,c#,C#,我必须将字符串中的所有{和}括号替换为[和] 但是我在字符串的最开始有一个{,在字符串的最末尾有一个},不能更改 在C#中我将如何做到这一点?可能有很多方法可以做到这一点,包括将它们全部替换,并将第一个/最后一个替换回原始值,但是这里有一个正则表达式替换方法,它将替换除第一个{和最后一个}之外的所有大括号 您可以在中进行测试 输出: { a[b]c } 下面是另一种方法,它将字符串解构成一个字符数组,收集所有字符并构建另一个字符串,逐个字符进行替换 string output = new st
{
和}
括号替换为[
和]
但是我在字符串的最开始有一个{
,在字符串的最末尾有一个}
,不能更改
在C#中我将如何做到这一点?可能有很多方法可以做到这一点,包括将它们全部替换,并将第一个/最后一个替换回原始值,但是这里有一个正则表达式替换方法,它将替换除第一个{和最后一个}之外的所有大括号 您可以在中进行测试 输出:
{ a[b]c }
下面是另一种方法,它将字符串解构成一个字符数组,收集所有字符并构建另一个字符串,逐个字符进行替换
string output = new string(input
.Select((c, i) =>
i == indexOfFirstBrace || i == indexOfLastBrace ? c
: c == '{' ? '['
: c == '}' ? ']'
: c)
.ToArray());
因为大括号的位置应该没有任何意义,所以您需要发布您使用的代码,因为代码中有一个bug。你试过了吗代码>?@LasseV.Karlsen-我想你可能误解了,我认为op想替换除最外层括号以外的所有括号。对于OP,您尝试了什么?是的,似乎很可能。好的,“最开始”和“最结束”是指字符串的第一个和最后一个字符,还是指第一个{大括号和最后一个}大括号?如果您想给出一些输入和预期输出的示例,这将有助于避免得到错误的答案。
string output = new string(input
.Select((c, i) =>
i == indexOfFirstBrace || i == indexOfLastBrace ? c
: c == '{' ? '['
: c == '}' ? ']'
: c)
.ToArray());
[TestMethod]
public void Replace()
{
string before = "{{{abc}}";
string expect = "{[[abc]}";
string calc = '{' + before.Substring(1, before.Length - 2).Replace('{', '[').Replace('}', ']') + '}';
Assert.AreEqual(expect, calc);
}