我有以下方法來清理字串:
public static String UseStringBuilderWithHashSet(string strIn)
{
var hashSet = new HashSet<char>("?&^$#@!() -,:;<>’\'-_*");
// specify capacity of StringBuilder to avoid resizing
StringBuilder sb = new StringBuilder(strIn.Length);
foreach (char x in strIn.Where(c => !hashSet.Contains(c)))
{
sb.Append(x);
}
return sb.ToString();
}
但是,諸如[MV] REOL ちるちる ChiruChiruor之類的字串[MV] REOL ヒビカセ Hibikase不會被清理。
如何修改我的方法,以便它可以將上述字串之一轉換為例如:
[MV] REOL ChiruChiru
uj5u.com熱心網友回復:
你試圖通過過濾掉你不想要的一切來徹底解決這個問題。這不是最佳的,因為它們有 100,000 多個可能的字符。
如果你只接受你想要的,你可能會找到更好的結果。
public static string CleanInput(string input)
{
//a-zA-Z allows any English alphabet character upper or lower case
//\[ and \] allows []
//\s allows whitespace
var regex = new Regex(@"[a-zA-Z\[\]\s]");
var stringBuilder = new StringBuilder(input.Length);
foreach(char c in input){
if(regex.IsMatch(c.ToString())){
stringBuilder.Append(c);
}
}
string output = stringBuilder.ToString();
//\s will match on any duplicate spaces and replace it with
//a single space.
return Regex.Replace(output , @"\s ", " ");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/455738.html
下一篇:列印行之間互動的模字串加法
