如何解决C#删除特殊字符
| 我想从字符串中删除所有特殊字符。允许的字符为A-Z(大写或小写),数字(0-9),下划线(_),空格(),百分比(%)或点号(。)。 我已经试过了: StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if ((c >= \'0\' && c <= \'9\') || (c >= \'A\' && c <= \'Z\') || (c >= \'a\' && c <= \'z\') | c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
{ sb.Append(c); }
}
return sb.ToString();
和这个:
Regex r = new Regex(\"(?:[^a-z0-9% ]|(?<=[\'\\\"])s)\",RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input,String.Empty);
但是似乎没有任何作用。任何帮助将不胜感激。
谢谢!
解决方法
您可以将第一种方法简化为
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (Char.IsLetterOrDigit(c) || c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
{ sb.Append(c); }
}
return sb.ToString();
这似乎通过了简单的测试。您可以使用LINQ缩短它
return new string(
input.Where(
c => Char.IsLetterOrDigit(c) ||
c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
.ToArray());
,Regex.Replace(input,\"[^a-zA-Z0-9% ._]\",string.Empty)
,第一种方法似乎是正确的,除了在c == \'.\'
之前有一个|
(按位或)而不是||
。
顺便说一句,您应该说明不起作用的内容(不是编译,崩溃还是生成错误的输出?)
,StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (char.IsLetterOrDigit(c) || \"_ %.\".Contains(c.ToString()))
sb.Append(c);
}
return sb.ToString();
,这是我的版本的外观。
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (Char.IsLetterOrDigit(c) ||
c == \'.\' || c == \'_\' || c == \' \' || c == \'%\')
sb.Append(c);
}
}
return sb.ToString();
,将每个字符转换为整数,然后将其ascii代码与ascii表进行比较,您可以在互联网上找到该表:http://www.asciitable.com/
{
char[] input = txtInput.Text.ToCharArray();
StringBuilder sbResult = new StringBuilder();
foreach (char c in input)
{
int asciiCode = (int)c;
if (
//Space
asciiCode == 32
||
// Period (.)
asciiCode == 46
||
// Percentage Sign (%)
asciiCode == 37
||
// Underscore
asciiCode == 95
||
( //0-9,asciiCode >= 48
&& asciiCode <= 57
)
||
( //A-Z
asciiCode >= 65
&& asciiCode <= 90
)
||
( //a-z
asciiCode >= 97
&& asciiCode <= 122
)
)
{
sbResult.Append(c);
}
}
txtResult.Text = sbResult.ToString();
}
,private string RemoveReservedCharacters(string strValue)
{
char[] ReservedChars = {\'/\',\':\',\'*\',\'?\',\'\"\',\'<\',\'>\',\'|\'};
foreach (char strChar in ReservedChars)
{
strValue = strValue.Replace(strChar.ToString(),\"\");
}
return strValue;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。