2

鉴于:

var x = "abc";
var x = "[abc]";

我编写了以下代码以删除 [ 和 ] 字符。

x1 = x.Replace("[", "");
x2 = x1.Replace("]", "");

有什么方法看起来更干净吗?例如,我可以一个接一个地替换字符串吗?请注意,如果出现 [ 和 ] 将始终在字符串的开头和结尾找到。

4

7 回答 7

8
string newstring = x.Trim('[', ']');
于 2012-05-21T07:35:58.313 回答
2

例如,我可以一个接一个地替换字符串吗?

是的:

var result = x.Replace("[", "").Replace("]", "");
于 2012-05-21T07:34:42.450 回答
2

由于 Replace() 返回一个字符串,您可以将表达式链接在一起:

var x1 = x.Replace("[", "").Replace("]", "");
于 2012-05-21T07:34:45.323 回答
1

使用大字符串和许多要删除的字符的可能最有效的方法:

String input = "[abc]";
String removed = input.RemoveChars(new[] { '[', ']' });

public static String RemoveChars(this string input, char[] charsToRemove)
{
    Array.Sort(charsToRemove);
    StringBuilder sb = new StringBuilder();
    foreach (char c in input)
    {
        if (Array.BinarySearch(charsToRemove, c) < 0)
            sb.Append(c);
    }
    return sb.ToString();
}
于 2012-05-21T07:46:06.907 回答
1

请注意,如果出现 [ 和 ] 将始终在字符串的开头和结尾找到。

您需要使用正则表达式来确保严格没有其他方括号被替换:

string output = Regex.Replace(x, @"^\[|\]$", "");
于 2012-05-21T07:40:37.197 回答
0
string newstring = x.TrimStart('[').TrimEnd(']');
于 2012-05-21T07:46:11.153 回答
0

您应该使用 TrimStart 和 TrimEnd:

string x = "[abc]";
string result = x.TrimStart('[').TrimEnd(']');

这将是最简单的方法,并且将具有最佳性能。

在这里,我假设'['将在开头,']'将在结尾。

于 2012-05-21T08:01:14.433 回答