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

时间:2014-12-11 07:28:39

标签: c# .net string

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

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

例如像这样从字符串

中删除制表符
str.Replace("\t","-");

特殊字符:!@#$%^& *()} {|":?>< [] \;' /。,〜和其他

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

5 个答案:

答案 0 :(得分:4)

您可以使用Regex.Replace方法。

“除了数字,字母”之外的模式可能看起来像[^\w\d],其中\w代表任何单词字符,\d表示任何数字,^表示否定,[] {1}}是字符组。

请参阅Regex language description以供参考。

答案 1 :(得分:1)

使用正则表达式

以下示例搜索上述字符并将其替换为 -

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

使用linq聚合

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

答案 2 :(得分:1)

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);

答案 3 :(得分:0)

 $(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);
        });

    });
});

答案 4 :(得分:0)

删除除字母,数字之外的所有内容,并替换为“-”

string mystring = "abcdef@_#124"
mystring = Regex.Replace(mystring, "[^\\w\\.]", "-");