提问者:小点点

基于模式C提取字符串的一部分#


我试图根据特定的模式在C#中提取字符串的一部分。

示例:

模式1=

 toto_tata_2021_titi_tutu.txt should return 2021

模式2=

 toto_tata_titi_2022_tutu.csv should return 2022

谢谢


共2个答案

匿名用户

string pattern = "string1_string2_{0}_string3_string4.txt";
int indexOfPlaceholder = pattern.IndexOf("{0}");
int numberOfPreviousUnderscores = pattern.Substring(0, indexOfPlaceholder).Split('_', StringSplitOptions.RemoveEmptyEntries).Length;
string stringToBeMatched = "toto_tata_2021_titi_tutu.txt";
string stringAtPlaceholder = stringToBeMatched.Split('_')[numberOfPreviousUnderscores];

匿名用户

使用库”System.文本。正则表达式”:

public static string ExtractYear(string s)
{
    var match = Regex.Match(s, "_([0-9]{4})_");
    if (match.Success)
    {
        return match.Groups[1].Value;
    }
    else
    {
        throw new ArgumentOutOfRangeException();
    }
}

像那样吗?
对于这样的情况,Regex听起来像一个伟大的选项。

相关问题