string1 的哪个子串与 string2 匹配

发布于 2024-08-27 15:54:55 字数 518 浏览 6 评论 0原文

有两个字符串。

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

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

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 中那样返回,是发生匹配的子字符串。

There are two strings.

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

String str2="Order Tm"; Then I want to know that str2 matches with which substring in the str1.

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

I am using regex because "Order Tm" will also matches "Order Time".It gives bool value that matches occurred or not.

Like str2="Order Tm" then it should return like in the str1,Order Time is the substring where matches is occurred.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假扮的天使 2024-09-03 15:54:55

你的问题很不清楚,你的代码无法编译。
有一些问题:

  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"

Your question is very unclear and your code does not compile.
There are some problems:

  1. You replace "\ " with @"\s*" - but you should replace just " " without \
  2. You can't use Regex.Escape() this way. It will double your \ and result in another regex which is not working. For instance your \s* will become \\s*
  3. It seems that you want to match only one word (that's where your question is unclear). In this case you should match against something like "Order|Tm"
  4. To get the matched word you need a grouping construct:

Example:

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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文