如何将字符串“网 金额”匹配(净和金额之间可以有任意数量的空格,包括零)与net amount
?这两个词之间字符串匹配
空间可以是任何空白和两个串的精确匹配应该在那里。但净金额(第一个带空格的字符串)可以是任何字符串的一部分,如Rate Net Amount
或Rate CommissionNet Amount.
匹配应该是不区分大小写。
如何将字符串“网 金额”匹配(净和金额之间可以有任意数量的空格,包括零)与net amount
?这两个词之间字符串匹配
空间可以是任何空白和两个串的精确匹配应该在那里。但净金额(第一个带空格的字符串)可以是任何字符串的一部分,如Rate Net Amount
或Rate CommissionNet Amount.
匹配应该是不区分大小写。
如果你只是要检查是否存在匹配,使用IsMatch:
using System;
using System.Text.RegularExpressions;
class Program
{
public static void Main()
{
string s = "Net Amount";
bool isMatch = Regex.IsMatch(s, @"Net\s*Amount",
RegexOptions.IgnoreCase);
Console.WriteLine("isMatch: {0}", isMatch);
}
}
更新:在您的意见,它听起来就像你想要的字符串搜索只在运行时才知道。你可以尝试动态构建正则表达式,例如这样的事情:
using System;
using System.Text.RegularExpressions;
class Program
{
public static void Main()
{
string input = "Net Amount";
string needle = "Net Amount";
string regex = Regex.Escape(needle).Replace(@"\ ", @"\s*");
bool isMatch = Regex.IsMatch(input, regex, RegexOptions.IgnoreCase);
Console.WriteLine("isMatch: {0}", isMatch);
}
}
@马克拜尔斯,非常感谢你先生....而我现在真的是你的粉丝。 – Harikrishna 2010-04-02 12:25:55
@马克·拜尔斯先生,如果我们想匹配像买入卖出和买入卖出这样的字符串,那么我们该怎么做呢? – Harikrishna 2010-04-03 10:08:41
@Harikrishna:对于这个问题,恕我直言,这太离谱了。你应该创建一个新的问题。请记住包括非常明确的规格,示例输入,示例输出。当你想要比赛成功,并且你希望比赛失败的时候,包括两个例子。试图首先自己解决问题,并将问题包含在问题中。显示你的代码失败的地方和方式的例子。 – 2010-04-03 10:58:01
您可以使用正则表达式:Net.*Amount
。
using System.Text.RegularExpressions;
Regex regex = new Regex("Net.*Amount");
String s = "Net Amount";
Match m = emailregex.Match(s);
// Now you have information in m about the matching string.
@Anders Abel,它会匹配所有以Net开头的单词吗? – Harikrishna 2010-04-02 11:17:58
是的,它会如果你使用。之前 *。点匹配任何字符,星号表示任何次数。如果您使用“Net + Amount”,则只有在单词之间至少有一个空格(并且没有其他字符)时才会匹配。 – 2010-04-02 11:20:22
使用正则表达式。看一看在System.Text.RegularExpressions
命名空间,即Regex
类:
var regex = new RegEx("net(\s+)amount", RegexOptions.IgnoreCase);
// ^^^^^^^^^^^^^^^
// pattern
参数字符串就是所谓的正则表达式模式。正则表达式模式描述了什么字符串会匹配它。它们用专门的语法表达。谷歌为regular expressions
,你应该找到大量有关正则表达式的信息。
用例:
bool doesInputMatch = regex.IsMatch("nET AmoUNT");
// ^^^^^^^^^^^^^^^^^
// test input
您可以使用
Regex.IsMatch(SubjectString, @"net\s*amount", RegexOptions.Singleline | RegexOptions.IgnoreCase);
+1考虑区分大小写。请注意,'RegexOptions.Singleline'在这里是不必要的 - 它只影响点'.',并且在正则表达式中没有点。 – 2010-04-02 12:22:31
请更具体 – Andrey 2010-04-02 11:16:38
你是什么意思“匹配”?你只是想检查一场比赛是否存在?你想要比赛的指数?你想用别的东西替换这个字符串吗? – 2010-04-02 11:18:15
@Mark Byers,先生..我想检查一下匹配是否存在? – Harikrishna 2010-04-02 11:20:39