从字符串 C# 中删除所有特殊字符

本文关键字:特殊字符 删除 字符串 | 更新日期: 2023-09-27 18:34:03

我正在寻找一段时间的解决方案,删除所有特殊字符替换为"-"。

目前我正在使用 replace() 方法。

例如,像这样从字符串中删除制表符

str.Replace("'t","-");

特殊字符:!@#$%^&*()}{|":?><[]'';'/.,~ 和其余的

我想要的只是英文字母,数字[0-9]和"-"

从字符串 C# 中删除所有特殊字符

你可以使用Regex.Replace 方法。

"除数字,字母表外"的模式可能看起来像[^'w'd]其中'w代表任何单词字符,'d代表任何数字,^表示否定,[]是字符组。

请参阅正则表达式语言描述以供参考。

使用正则表达式

下面的示例搜索提到的字符并将其替换为 -

var pattern = new Regex("[:!@#$%^&*()}{|'":?><'[']'';'/.,~]");
pattern.Replace(myString, "-");

使用 linq 聚合

char[] charsToReplace = new char[] { ':', '!', '@', '#', ... };
string replacedString = charsToReplace.Aggregate(stringToReplace, (ch1, ch2) => ch1.Replace(ch2, '-'));

LINQ 版本,如果字符串为 UTF-8(默认情况下为):

var newChars = myString.Select(ch => 
                             ((ch >= 'a' && ch <= 'z') 
                                  || (ch >= 'A' && ch <= 'Z') 
                                  || (ch >= '0' && ch <= '9') 
                                  || ch == '-') ? ch : '-')
                       .ToArray();
return new string(newChars);

删除除字母、数字以外的所有内容并替换为"-"

string mystring = "abcdef@_#124"
mystring = Regex.Replace(mystring, "[^''w''.]", "-");
 $(function () {
    $("#Username").bind('paste', function () {
        setTimeout(function () {
            //get the value of the input text
            var data = $('#Username').val();
            //replace the special characters to ''
            var dataFull = data.replace(/[^'w's]/gi, '');
            //set the new value of the input text without special characters
            $('#Username').val(dataFull);
        });
    });
});