删除字符串中与数字和字母不同的所有符号

本文关键字:符号 字符串 数字 删除 | 更新日期: 2023-09-27 17:55:44

我需要一个正则表达式来删除所有不同于数字的符号和字符串中的字母。例:

string address = "TEXT 3 !@#$%^&*()_}|{:?> REMOVE ALL SYMBOLS 45";
string result = "TEXT 3 REMOVE ALL SYMBOLS 45";

有什么想法吗?

删除字符串中与数字和字母不同的所有符号

请尝试此操作

string address = "TEXT 3 !@#$%^&*()_}|{'":?> 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(); 

它应该比正则表达式更快。

这应该有效:

var result = new Regex("[^a-zA-Z0-9 ]").Replace(address, string.Empty);

这只保留a-ZA-Z0-9white space

您还可以使用 linq:

var result2 = new String(address.Where(x => char.IsLetterOrDigit(x) 
                                         || char.IsWhiteSpace(x)).ToArray());

两者都为我工作。我的最终代码:

 var addressWithoutEmtySpacesMoreThanOne = Regex.Replace(address, @"'s+", " ");
 var result = new Regex("[^a-zA-Zа-яА-Я0-9 -]").Replace(addressWithoutEmtySpaces, "");
 customer.Address = result;