2010-12-11 28 views
10

文字列からすべての特殊文字を削除するC#関数が必要です。Regex特殊文字を削除する

また、「George's」を「George」(一重引用符と文字の両方を削除)に変更することはできますか?

+3

少なくとも定義』になる特殊文字を" – BoltClock

+0

あなたは:文字、数字またはスペースではないものをすべて削除しますか? –

答えて

37

この方法では、文字、数字、スペース以外のすべてが削除されます。また、いずれかを削除」または 『文字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); 
} 
+0

こんにちはRyan、コードをありがとう。それは正常に動作しています。空白を無視することは可能ですか?空白がそこに欲しいです。ありがとう。 – user374760

+0

これが答えであれば、そのようにマークすることを忘れないでください。 –

+0

こんにちはRyan、文字列から空白を削除したくありません。私にそれをする方法を教えてください。私はそれを解決策としてマークしました。ありがとう。 – user374760

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

その優れた操作を行いますけれども、ここで機能があります。たとえば、perlregexes s/[^A-Za-z0-9]+//gを使用すると、単語以外の文字が削除されます(申し訳ありませんが、私はC#regexes:Dに精通していません)。

特定のケースを気にする場合(前に単語がある場合は'sを削除するなど)は、前の単語に基づいて削除するものを定義してください。そうでない場合は、すべて'sを削除してください。

+1

あなたは' s/\ W + // g'を意味すると思います( 'tr ///'は正規表現ではなく、 "word C#のバージョンは '' Regex.Replace(input、@ "\ W" "、String.Empty)' 'となります。 –

+0

@Alan Moore you私はそれについて忘れています=)。私はそれを認識している、私は実際には彼が望んだと思った。 – javs

+0

ええ、私は私たちにtchristからの叱責の両方を保存するために単語の文字についてそのビットを投げました。 :D –

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を追加します。

関連する問題