如何从字符串中删除除破折号和空格字符外的所有非字母数字字符?
当前回答
你可以试试:
string s1 = Regex.Replace(s, "[^A-Za-z0-9 -]", "");
s是你的弦。
其他回答
你可以试试:
string s1 = Regex.Replace(s, "[^A-Za-z0-9 -]", "");
s是你的弦。
下面是一个使用@ata answer作为灵感的扩展方法。
"hello-world123, 456".MakeAlphaNumeric(new char[]{'-'});// yields "hello-world123456"
或者如果您需要除连字符以外的其他字符…
"hello-world123, 456!?".MakeAlphaNumeric(new char[]{'-','!'});// yields "hello-world123456!"
public static class StringExtensions
{
public static string MakeAlphaNumeric(this string input, params char[] exceptions)
{
var charArray = input.ToCharArray();
var alphaNumeric = Array.FindAll<char>(charArray, (c => char.IsLetterOrDigit(c)|| exceptions?.Contains(c) == true));
return new string(alphaNumeric);
}
}
如果你用JS工作,这里有一个非常简洁的版本
myString = myString.replace(/[^A-Za-z0-9 -]/g, "");
我本可以使用RegEx,它们可以提供优雅的解决方案,但它们会导致性能问题。这里有一个解决方案
char[] arr = str.ToCharArray();
arr = Array.FindAll<char>(arr, (c => (char.IsLetterOrDigit(c)
|| char.IsWhiteSpace(c)
|| c == '-')));
str = new string(arr);
当使用紧凑框架时(它没有FindAll)
将FindAll替换为1
char[] arr = str.Where(c => (char.IsLetterOrDigit(c) ||
char.IsWhiteSpace(c) ||
c == '-')).ToArray();
str = new string(arr);
1 ShawnFeatherly的评论
使用系统。Linq
string withOutSpecialCharacters = new string(stringWithSpecialCharacters.Where(c =>char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-').ToArray());
推荐文章
- RegEx以确保字符串至少包含一个小写字符、大写字符、数字和符号
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- Java Regex捕获组
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- 如何从字符串中删除新的行字符?