如何将字符串“Net Amount”(在Net和Amount之间可以有任意数量的空格,包括零)与net amount
匹配?
这两个单词之间的空格可以是任何空格,两个字符串的精确匹配应该在那里。但净金额(带空格的第一个字符串)可以是任何字符串的一部分,如Rate Net Amount
或Rate CommissionNet Amount.
匹配应不区分大小写。
答案 0 :(得分:7)
使用正则表达式。查看System.Text.RegularExpressions
命名空间,即Regex
类:
var regex = new RegEx("net(\s+)amount", RegexOptions.IgnoreCase);
// ^^^^^^^^^^^^^^^
// pattern
参数字符串是所谓的正则表达式模式。正则表达式模式描述了与之匹配的字符串。它们用专门的语法表达。谷歌regular expressions
,您应该找到有关正则表达式的大量信息。
用法示例:
bool doesInputMatch = regex.IsMatch("nET AmoUNT");
// ^^^^^^^^^^^^^^^^^
// test input
答案 1 :(得分:6)
如果您只想检查是否存在匹配项,请使用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);
}
}
答案 2 :(得分:2)
您可以使用
Regex.IsMatch(SubjectString, @"net\s*amount", RegexOptions.Singleline | RegexOptions.IgnoreCase);
答案 3 :(得分:0)
您可以使用正则表达式: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.