Какая подстрока строки1 совпадает со строкой2 - PullRequest
0 голосов
/ 06 апреля 2010

Есть две строки.

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, Order Time - это подстрока, в которой найдено совпадение.

1 Ответ

2 голосов
/ 06 апреля 2010

Ваш вопрос очень неясен, и ваш код не компилируется.
Есть некоторые проблемы:

  1. Вы заменяете "\ " на @"\s*" - но вы должны заменить просто " " без \
  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"
...