2010-04-06 114 views
-1

有两个字符串。string1的哪个子字符串与字符串2匹配

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

我使用正则表达式,因为“订单以旧换新”也将匹配“订单时间”。它给出了匹配发生或不布尔值。

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

+0

再次什么是问题? – mfeingold 2010-04-06 11:28:17

回答

2

你的问题很不明确,你的代码不能编译。
有一些问题:

  1. 更换了"\ "@"\s*" - 但是你应该只更换" "没有\
  2. 不能使用Regex.Escape()这种方式。它会加倍你的\,并导致另一个不起作用的正则表达式。例如你的\s*将变成\\s*
  3. 看来你只想匹配一个单词(这是你的问题不清楚的地方)。在这种情况下,你应该对阵像"Order|Tm"
  4. 要获得匹配的单词,你需要一个grouping construct

例子:

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" 
+0

@ tanascius,谢谢先生,但我不明白为什么有Order | Tm? – Harikrishna 2010-04-06 12:00:07

+0

@Harikrishna:这是一个'交替构造'。你可以看看它喜欢的网址。这意味着你的正则表达式匹配'订单'或'Tm' – tanascius 2010-04-06 12:05:25

+0

好吧,先生,我明白了,如果有像买入/卖出的字符串,那么我怎样才能将买卖卖给那个字符串? – Harikrishna 2010-04-06 12:10:30