2016-08-16 14 views
-1

私のアプリケーションには許可された文字のリストがあります。 。?! 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz、 '()の#$%^ *;:+ = -_C#文字列内の他のすべての文字をホワイトリストの文字以外に置き換えます

何私の文字列は、それより上の任意の文字が含まれている場合、私はのをしたいと、私はそれを行うことができますどのようにString.Emptyを と交換されます

+1

ところで:「それはString.Emptyのに置き換えられます」:あなたは_The全体STRING_を空にしなければならないかだけで不正な文字を削除する必要があります意味ですか? –

+0

不正な文字のみです。私は自分でそれをすることができますが、質問は同僚からのものでした。それでここに投稿してください。すぐに解決できる可能性があります。 –

+0

http://stackoverflow.com/questions/16833939/regex-to-match-all-alphanumeric-and-certain-special-characters –

答えて

3

あなたが許可された文字のリストを持っている場合、私はこのリストに対するテストを示唆。そのような何か(LINQの):

// HashSet is efficient to find items O(1) 
    private static HashSet<char> s_Allowed = new HashSet<char>(
    @"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.,'()?!#$%^*;:+="); 

    ... 
    string source = "123~~~456"; 

    // "123456" 
    string result = string.Concat(source 
    .Where(c => s_Allowed.Contains(c))); 
+0

ありがとうダミーティ –

1

正規表現の置換えを使うことができます。これを試してみてください:

public static string formatToken(string token) 
    { 
     //To prevent null exception 
     if (string.IsNullOrWhiteSpace(token)) return token; 

     Regex rgx = new Regex("[^a-zA-Z0-9 .,'()?!#$%*;:+=-_]"); //Maybe some characters need to be scaped. 
     return rgx.Replace(token, ""); 
    } 
+0

ありがとうRumpelstick –

関連する問題