删除字符串中与数字和字母不同的所有符号
问题描述:
我需要一个正则表达式来删除与字符串中的数字和字母不同的所有符号。例如:删除字符串中与数字和字母不同的所有符号
string address = "TEXT 3 [email protected]#$%^&*()_}|{:?> REMOVE ALL SYMBOLS 45";
string result = "TEXT 3 REMOVE ALL SYMBOLS 45";
任何想法?
答
这应该工作:
var result = new Regex("[^a-zA-Z0-9 ]").Replace(address, string.Empty);
这仅保留无论在a-Z
,A-Z
或0-9
或white space
你也可以使用LINQ:
var result2 = new String(address.Where(x => char.IsLetterOrDigit(x)
|| char.IsWhiteSpace(x)).ToArray());
答
试试这个请
string address = "TEXT 3 [email protected]#$%^&*()_}|{\":?> REMOVE ALL SYMBOLS 45";
var sb = new StringBuilder();
foreach (var c in address)
{
if (Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c))
sb.Append(c);
}
var result = sb.ToString();
它应该比正则表达式更快。
+0
不知道是否if(c ==''|| Char.IsLetterOrDigit(c))...'不是更好,现在你还允许不需要的制表符或换行符。 –
+0
空间也没有被要求,但他们出现在样本..也我们不知道我们应该考虑奥特文化。所以有很多问题真的:) – tym32167
答
两者都适合我。 我的最终代码:
var addressWithoutEmtySpacesMoreThanOne = Regex.Replace(address, @"\s+", " ");
var result = new Regex("[^a-zA-Zа-яА-Я0-9 -]").Replace(addressWithoutEmtySpaces, "");
customer.Address = result;
最后的' - ':它是干什么用的? –
@PowerPuffGirl究竟是哪一个? – user3185569
为什么倒票? – user3185569