这似乎是C#用户常见的问题,经过研究和多次尝试,我无法从一个字符串中删除一对小括号。我遇到问题的字符串是 Service (additional)
.
经过我的研究,我了解到括号的处理方式是不同的。Regex.Replace
. 随着我的研究也出现了多个答案,我尝试过,但似乎没有什么效果。以下是我尝试过的一些去除这些小括号的方法。
cleanValue = Regex.Replace(intVal, " ", "").Replace("(", "").Replace(")", "").Replace(",", "").Replace("/", "").Replace("-", "");
cleanValue = Regex.Replace(intVal, " ", "").Replace(@"\(", "").Replace(@"\)", "").Replace(",", "").Replace("/", "").Replace("-", "");
cleanValue = Regex.Replace(intVal, " ", "").Replace("[()]", "").Replace(",", "").Replace("/", "").Replace("-", "");
cleanValue = Regex.Replace(intVal, " ", "").Replace(@"[^a-zA-Z]", "").Replace(",", "").Replace("/", "").Replace("-", "");
这些方法都不奏效,通过代码后,我只看到'e'和'('之间的空间被删除了。我是不是遗漏了什么?
如果有人想看 function
这里使用的是 "小括号"。
public static string CleanExtra(string intVal)
{
string cleanValue;
if (intVal == null)
{
throw new System.ArgumentException("Value cannot be null", "original");
}
else
{
//cleanValue = Regex.Replace(intVal, " ", "").Replace("(", "").Replace(")", "").Replace(",", "").Replace("/", "").Replace("-", "");
//cleanValue = Regex.Replace(intVal, " ", "").Replace(@"\(", "").Replace(@"\)", "").Replace(",", "").Replace("/", "").Replace("-", "");
//cleanValue = Regex.Replace(intVal, " ", "").Replace("[()]", "").Replace(",", "").Replace("/", "").Replace("-", "");
cleanValue = Regex.Replace(intVal, " ", "").Replace(@"[^a-zA-Z]", "").Replace(",", "").Replace("/", "").Replace("-", "");
}
return cleanValue;
}
在您调用 Regex.Replace(...)
其实你是在用 string.Replace(...)
. 这使你的电话 .Replace(@"[^a-zA-Z]", "")
毫无用处。
将其简化为
cleanValue = Regex.Replace(intVal, @"[^a-zA-Z]", "");
这样就可以去掉所有的空格和特殊字符 这就是你的代码所要做的事情。这包括括号。
在这里使用Regex是多余的,因为这可以通过一个简单的 Replace
呼叫。
string val = intVal.Replace("(", "").Replace(")", "");
那是因为每一秒钟 Replace
是对一个 string
因此不能用regex来代替。
或者,如果你想用一种花哨的LINQ方式来代替regex,你可以这样做。
return new string(input.Where(c => c != '(' && c != ')').ToArray());
这样就可以去掉所有的括号或方括号:
var chars = input
.Where(c => CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.OpenPunctuation
&& CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.ClosePunctuation)
.ToArray();
return new string(chars);