Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换字符串中的括号_C# - Fatal编程技术网

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);
    }