-1

有两个字符串。

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”。它给出了匹配发生与否的布尔值。

就像str2="Order Tm"那样,它应该像在str1 中一样返回,Order Time是发生匹配的子字符串。

4

1 回答 1

2

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

  1. 您替换"\ "@"\s*"- 但您应该替换为" "without\
  2. 你不能用Regex.Escape()这种方式。它会使您翻倍\并导致另一个无法正常工作的正则表达式。例如你\s*会变成\\s*
  3. 您似乎只想匹配一个单词(这就是您的问题不清楚的地方)。在这种情况下,您应该匹配类似的东西"Order|Tm"
  4. 要获得匹配的单词,您需要一个分组构造

例子:

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"
于 2010-04-06T11:48:46.967 回答