我需要开发基于模式处理字符串比较的实用程序类的想法例如:如果String处于此格式A_B_C_asdasd_asasd
,如果我想仅将Part Exactly B_C
部分与其他字符串进行比较,实用程序类需要判断字符串是否有效,比如说FileName是F1_2014_11_12_2013345980.dat
,我想比较一下字符串部分2014_11
包含一个像2014
这样的字符串,我不知道#39; t搜索整个字符串,我正在寻找通用方法,其中应用程序将具有配置值,告诉我模式以文件名格式搜索并包含目标字符串。如果config中没有提到任何值,我们可以匹配整个文件名。我们可以regex
来比较模式明智的字符串
答案 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 >考虑该变种。根据当前信息和数据类型,区分大小写似乎不是问题。