文字列内の単語を逆順で照合したかったのです。
名前が逆の順序で存在する場合、ユーザーにプロンプトを表示する検証を行いたいと考えました。
例えば:
name
列の値が 'Viral,Tennis' の場合
ユーザーが「Tennis,Viral」という値で新しい名前を入力すると、
では、正規表現やその他の方法を使用して単語の逆順を一致させるにはどうすればよいでしょうか?
開発には C#.net を使用しています。
文字列内の単語を逆順で照合したかったのです。
名前が逆の順序で存在する場合、ユーザーにプロンプトを表示する検証を行いたいと考えました。
例えば:
name
列の値が 'Viral,Tennis' の場合
ユーザーが「Tennis,Viral」という値で新しい名前を入力すると、
では、正規表現やその他の方法を使用して単語の逆順を一致させるにはどうすればよいでしょうか?
開発には C#.net を使用しています。
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);
上記は、文字と数字のみで構成される文字列を生成するはずです。空白も削除されます。