我需要在code-behind中从 C# 中的字符串中删除括号。
例如,如果我有一个字符串 as [My [] Groups]
,我想把它变成My [] Groups
.
试试这个:
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
使用示例中的字符串解决此问题的最简单方法是采用子字符串:
if (s.Length > 2) {
s = s.Substring(1, s.Length-2);
}
这仅在您 100% 确定第一个和最后一个字符确实是方括号时才有效。如果它们不是,例如,当字符串未修剪时,您可能需要执行额外的字符串操作(例如修剪字符串)。
使用简单Trim
:
var result = "[My [] Groups]".Trim('[', ']');
看看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 编写的。
尝试string.Replace
http://msdn.microsoft.com/en-us/library/system.string.replace.aspx
以下语句删除所有字符 [ 和 ]。
Regex.Replace("This [is [a] [test.", @"[\[\]]", "") // -> "This is a test."
替换解决方案将摆脱内部支架以及外部支架。我想你想要:
string result = "[My [] Groups]".TrimLeft('[').TrimRight(']');
var myString = "[My Groups]";
myString.Replace("[", string.Empty);
myString.Replace("]", string.Empty);