8

我需要在code-behind中从 C# 中的字符串中删除括号。

例如,如果我有一个字符串 as [My [] Groups],我想把它变成My [] Groups.

4

8 回答 8

20

试试这个:

yourString = yourString.Replace("[", string.Empty).Replace("]", string.Empty);

自编辑问题以来更新的答案:

string s = "[My [] Groups]";
string pattern = @"^(\[){1}(.*?)(\]){1}$";
Console.WriteLine(Regex.Replace(s, pattern, "$2")); // will print My [] Groups
于 2012-10-11T14:07:00.250 回答
18

使用示例中的字符串解决此问题的最简单方法是采用子字符串:

if (s.Length > 2) {
    s = s.Substring(1, s.Length-2);
}

这仅在您 100% 确定第一个和最后一个字符确实是方括号时才有效。如果它们不是,例如,当字符串未修剪时,您可能需要执行额外的字符串操作(例如修剪字符串)。

于 2012-10-11T14:07:10.533 回答
12

使用简单Trim

var result = "[My [] Groups]".Trim('[', ']');
于 2012-10-11T17:41:57.557 回答
8

看看String.Replace方法

http://msdn.microsoft.com/en-us/library/fk49wtc1.asp

更新:

如果仅要删除封闭括号,则可以删除第一个和最后一个字符。通过 dasblinkenlight 建议的代码或正则表达式。

只要确保它们确实是括号第一。

如果您使用正则表达式,您可以一次性完成所有这些操作。否则,您应该在 dasblinkenlight 的解决方案中添加类似的内容。

if (s.Length > 2) {
  if(s.StartsWith("[")) {
    s = s.Substring(1, s.Length-1);
  }
  if(s.EndsWith("]")) {
    s = s.Substring(0, s.Length-1);
  }
}

或者如果你只希望在你有一个开始和一个结束括号的情况下剥离

if (s.Length > 2) {
  if(s.StartsWith("[") && s.EndsWith("]")) {
    s = s.Substring(1, s.Length-2);
  }
}

检查长度是否大于 2 可能会被删除,但我保留它以表明初始代码的来源是由 dasblinkenlight 编写的。

于 2012-10-11T14:06:43.700 回答
2

尝试string.Replace

http://msdn.microsoft.com/en-us/library/system.string.replace.aspx

于 2012-10-11T14:07:13.343 回答
2

以下语句删除所有字符 [ 和 ]。

Regex.Replace("This [is [a] [test.", @"[\[\]]", "")   // -> "This is a test."
于 2012-10-11T14:07:41.043 回答
2

替换解决方案将摆脱内部支架以及外部支架。我想你想要:

string result = "[My [] Groups]".TrimLeft('[').TrimRight(']');
于 2012-10-11T17:38:43.427 回答
1
var myString = "[My Groups]";
myString.Replace("[", string.Empty);
myString.Replace("]", string.Empty);
于 2012-10-11T14:06:49.877 回答