字符串匹配

时间:2010-04-02 11:14:58

标签: c# .net winforms string

如何将字符串“Net Amount”(在Net和Amount之间可以有任意数量的空格,包括零)与net amount匹配?

这两个单词之间的空格可以是任何空格,两个字符串的精确匹配应该在那里。但净金额(带空格的第一个字符串)可以是任何字符串的一部分,如Rate Net AmountRate CommissionNet Amount.

匹配应不区分大小写。

4 个答案:

答案 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.