0

我想用相反的顺序匹配字符串中的单词。

如果名称以相反的顺序存在,我们希望将验证提示用户。

例如:

如果name列的值为“病毒,网球”

现在,如果用户输入一个新名称,其值为 'Tennis,Viral'

那么我们如何使用正则表达式或其他方式匹配单词的逆序呢?

我正在使用 C#.net 进行开发。

4

1 回答 1

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);

以上应该产生一个仅由字母和数字组成的字符串。空格也将被删除。

于 2012-05-14T09:10:40.377 回答