字符串模式匹配检入c#

wiusto 发布于 2019-06-12 c# 最后更新 2019-06-12 21:16 2 浏览

例如:如果字符串的格式为A_B_C_asdasd_asasd,如果我只想比较部分完全B_C节与其他字符串,实用程序类需要判断字符串是否有效或不是说,如果FileName是F1_2014_11_12_2013345980.dat,我想比较部分字符串说2014_11包含一个字符串像2014,我不搜索整个字符串,我正在寻找泛型方法,其中应用程序将具有配置值告诉我模式以文件名格式搜索并包含目标字符串。如果在config中没有提到任何值,我们可以有整个文件名匹配。我们可以通过regex来比较模式明智的字符串

已邀请:

oalias

赞同来自:

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

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
在返回true或false的布尔值之前,Contain将确保满足以下字符顺序。
This method performs an ordinal (case-sensitive and culture-insensitive) comparison. The search begins at the first character position of this string and continues through the last character position
因此,由于对案例的限制,您可以使用ToLower()ToUpper(),也可以使用文化信息实施String.Compare来考虑该变体。根据当前信息和数据类型,区分大小写似乎不是问题。

ut_est

赞同来自:

您可以使用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);
        }
    }
}