替换字符串中的括号
本文关键字:字符串 替换 | 更新日期: 2023-09-27 18:15:30
我必须用[
和]
替换字符串中的所有{
和}
括号。
但是我在最开始有一个{
,在字符串的最后有一个}
,不能改变。
我如何在c#中做到这一点?
可能有很多方法可以做到这一点,包括将它们全部替换并将第一个/最后一个替换回原始值,但这里有一个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());
[TestMethod]
public void Replace()
{
string before = "{{{abc}}";
string expect = "{[[abc]}";
string calc = '{' + before.Substring(1, before.Length - 2).Replace('{', '[').Replace('}', ']') + '}';
Assert.AreEqual(expect, calc);
}