我想知道指定一个字符数组的最佳方法是什么,
{
}
[
]
Run Code Online (Sandbox Code Playgroud)
然后检查字符串是否存在,如果它们在那里,则完全删除它们.
if (compiler.Parser.GetErrors().Count == 0)
{
AstNode root = compiler.Parse(phrase.ToLower());
if (compiler.Parser.GetErrors().Count == 0)
{
try
{
fTextSearch = SearchGrammar.ConvertQuery(root, SearchGrammar.TermType.Inflectional);
}
catch
{
fTextSearch = phrase;
}
}
else
{
fTextSearch = phrase;
}
}
else
{
fTextSearch = phrase;
}
string[] brackets = brackets = new string[]
{
"{",
"}",
"[",
"]"
};
string[] errorChars = errorChars = new string[]
{
"'",
"&"
};
StringBuilder sb = new StringBuilder();
string[] splitString = fTextSearch.Split(errorChars, StringSplitOptions.None);
int numNewCharactersAdded = 0;
foreach (string itm in splitString)
{
sb.Append(itm); //append string
if (fTextSearch.Length > (sb.Length - numNewCharactersAdded))
{
sb.Append(fTextSearch[sb.Length - numNewCharactersAdded]); //append splitting character
sb.Append(fTextSearch[sb.Length - numNewCharactersAdded - 1]); //append it again
numNewCharactersAdded++;
}
}
string newString = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
Ric*_*ard 11
正则表达式可以更容易地做到这一点:
var result = Regex.Replace(input, @"[[\]()]", "");
Run Code Online (Sandbox Code Playgroud)
使用字符集([...])匹配其中的任何字符并替换为空.Regex.Replace将取代所有比赛.
另一种简洁的方法是使用Enumerable.Except获取Chars的集合差异(假设brackets为chars):
String newString = new String(oldString.Except(brackets).ToArray());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |