2012-05-14 23 views
0

逆の順序で文字列内の単語を一致させたい。文字列の順序に一致する正規表現

名前が逆の順序で存在する場合は、ユーザーに確認を促したかったとします。例えば

name列の値を、持っている

場合は 'ウイルス、テニス'

今、ユーザーが値 'テニス、ウイルス'

その後に新しい名前を入力した場合

正規表現やその他の方法を使って単語の逆順をどのように一致させることができますか?

開発のためにC#.netを使用しています。

+0

単語*の逆順に一致するとはどういう意味ですか? – aioobe

+1

おそらく、使用している言語を追加できますか? – Shubham

+2

私はあなたが文字列を分割して逆にそれを反復するほうがよいと思います。 – npinti

答えて

0

あなたはRegex.Split(String input, String regex)を見て、そのような何か行うことができます:トリックを行うだろう

String[] userEntry = Regex.Split(userString, "\\s+"); 
StringBuilder sb = new StringBuilder() 
for (int i = userEntry.Length -1; i >= 0; i--) 
{ 
    sb.append(userEntry[i]).append(" "); 
} 

String result = sb.ToString(); 
//Do Validation 

を、しかし、あなたは、あなたがしなければ物事は少し厄介になることを心に留めておく必要がありますコンマなどの特殊記号の順序を変更する必要はありません。あなたはそれらを簡単に削除し、特別な記号なしで検証を行うことができます。

編集:それはあなたが特別なシンボルによって何を意味するかによって異なります。正規表現[^a-zA-z0-9]+は、文字(大文字または小文字)ではなく、数字でもない文字にも一致します。したがって、次のようなことを簡単に行うことができます:

string input = ... 
    string pattern = "[^a-zA-z0-9]+"; 
    string replacement = ""; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement); 

上記の文字列は文字と数字のみで作成されます。空白も削除されます。

+0

特殊記号を削除するRegexはありますか? – Viral

+0

@ウイルス:私は自分の答えを変更しました。削除したくないシンボルがある場合は、それらを角括弧の中に入れて 'pattern'変数に追加してください。 – npinti

関連する問題