string1的哪个子字符串与string2匹配

时间:2010-04-06 11:25:15

标签: c# .net winforms string-matching

有两个字符串。

String str1="Order Number Order Time Trade Number";

String str2="Order Tm";然后我想知道 str2 str1中的哪个子字符串匹配。

string regex = Regex.Escape(str2.Replace(@"\ ", @"\s*");
bool isColumnNameMatched = Regex.IsMatch(str1, regex, RegexOptions.IgnoreCase);

我正在使用正则表达式,因为“Order Tm”也会匹配“Order Time”。它会给出匹配发生或不匹配的bool值。

str2="Order Tm"类似,它应该像 str1一样返回,订单时间是发生匹配的子字符串。

1 个答案:

答案 0 :(得分:2)

您的问题非常清楚,您的代码无法编译 有一些问题:

  1. 您将"\ "替换为@"\s*" - 但您应该仅" "替换\
  2. 您不能以这种方式使用Regex.Escape()。它会使你的\加倍并导致另一个无法正常工作的正则表达式。例如,您的\s*将成为\\s*
  3. 您似乎只想匹配一个单词(这是您的问题不明确的地方)。在这种情况下,您应该匹配"Order|Tm"
  4. 之类的内容
  5. 要获得匹配的字词,您需要grouping construct
  6. 示例:

    var str1 = "Order Number Order Time Trade Number";
    var str2 = "(Order|Tm)";
    string regex = str2.Replace( @" ", @"\s*" );
    var match = Regex.Match( str1, regex );
    
    match.Success; // results in "true"
    match.Value; // results in "Order"