字符串模式匹配检查c#

时间:2014-11-19 17:13:42

标签: c# c#-4.0

我需要开发基于模式处理字符串比较的实用程序类的想法例如:如果String处于此格式A_B_C_asdasd_asasd,如果我想仅将Part Exactly B_C部分与其他字符串进行比较,实用程序类需要判断字符串是否有效,比如说FileName是F1_2014_11_12_2013345980.dat,我想比较一下字符串部分2014_11包含一个像2014这样的字符串,我不知道#39; t搜索整个字符串,我正在寻找通用方法,其中应用程序将具有配置值,告诉我模式以文件名格式搜索并包含目标字符串。如果config中没有提到任何值,我们可以匹配整个文件名。我们可以regex来比较模式明智的字符串

2 个答案:

答案 0 :(得分:1)

您可以使用Regex,对模式进行分组:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // First we see the input string.
        string input = "/content/alternate-1.aspx";

        // Here we call Regex.Match.
        Match match = Regex.Match(input, @"content/([A-Za-z0-9\-]+)\.aspx$",
            RegexOptions.IgnoreCase);

        // Here we check the Match instance.
        if (match.Success)
        {
            // Finally, we get the Group value and display it.
            string key = match.Groups[1].Value;
            Console.WriteLine(key);
        }
    }
}

答案 1 :(得分:0)

我不确定你是否需要如此精细。如果您尝试仅验证数据的部分,请避免正则表达式的额外开销。

private static bool FindPortion(string input, string pattern)
{
     if(!string.IsNullOrEmpty(input) && !string.IsNullOrEmpty(pattern))
          if(input.Contains(pattern))
               return true;

     return false;
}

所以理论上你有:

  • 输入:11_10_2014_Random.dat
  • 模式:10_2014
  • 结果:True

Contain 将确保在返回 true false 的布尔值之前满足以下字符顺序。

  

此方法执行序数(区分大小写和   文化不敏感)比较。搜索从第一个开始   这个字符串的字符位置,并持续到最后一个   角色位置

因此,由于案例的限制,您可以使用ToLower()ToUpper()或使用文化信息String.Compare >考虑该变种。根据当前信息和数据类型,区分大小写似乎不是问题。