-1

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

「Order Tm」は「Order Time」にも一致するため、正規表現を使用しています。一致が発生したかどうかをブール値で示します。

その後、str1 のようstr2="Order Tm"に返される必要があります。Order Timeは、一致が発生した部分文字列です。

4

1 に答える 1

2

あなたの質問は非常に不明確であり、あなたのコードはコンパイルされません。
いくつかの問題があります:

  1. あなた"\ "@"\s*"-に置き換えますが、あなたはただ" "なしで置き換える必要があります\
  2. このように使用することはできませんRegex.Escape()。それはあなたを2倍にし、\機能していない別の正規表現になります。たとえば、あなた\s*\\s*
  3. 1つの単語だけに一致させたいようです(それはあなたの質問が不明確なところです)。この場合、あなたは次のようなものと一致する必要があります"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 に答える