我正在寻找解决方案一段时间,删除所有特殊字符替换为" - "。
目前我正在使用replace()方法。
例如像这样从字符串
中删除制表符str.Replace("\t","-");
特殊字符:!@#$%^& *()} {|":?>< [] \;' /。,〜和其他
我想要的只是英文字母,数字[0-9]和" - "
答案 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\\.]", "-");