替换字符串中的括号

时间:2014-07-29 13:44:45

标签: c#

我必须用[和]替换字符串中的所有{和}括号。

但我有一个{在开始时和一个}在字符串的最末端无法改变。

我如何在C#中执行此操作?

2 个答案:

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