我们需要一个C#函数,它将从字符串中删除所有特殊字符。
另外,是否可以将“George's”改为“George”(删除单引号和字符)?
答案 0 :(得分:42)
此方法将删除除字母,数字和空格之外的所有内容。它还将删除任何'或'后跟字符s。
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex("(?:[^a-z0-9 ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}
答案 1 :(得分:1)
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex(
"(?:[^a-zA-Z0-9 ]|(?<=['\"])s)",
RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}
莱恩的回答是正确的。只需添加A-Z
以及许多人需要它。
答案 2 :(得分:0)
如果我们知道特殊字符是什么,会有所帮助。这是一个功能虽然可以解决这个问题
public bool IsSpecialChar(char c) {
// Need you to fill this out
}
public string RemoveSpecialChars(string s) {
var builder = new System.Text.StringBuilder();
foreach (var cur in s) {
if (!IsSpecialChar(cur)) {
builder.Append(cur);
}
}
return builder.ToString();
}
答案 3 :(得分:0)
最好定义一个你想要保留的字符列表,而不是枚举你不想要的所有其他字符。例如,使用perlregexes s/[^A-Za-z0-9]+//g
将删除任何非单词字符(抱歉,我不熟悉c#regexes:D)。
对于您的其他问题,如果您关心某些情况(例如只有删除's
前面有一个单词),您可以根据前一个单词定义要删除的内容,否则只删除所有出现的{ {1}}。