Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将年份信息作为字符串值获取?_C# - Fatal编程技术网

C# 如何将年份信息作为字符串值获取?

C# 如何将年份信息作为字符串值获取?,c#,C#,我有一个类似于下面的内容,我只想选择年份信息作为字符串值 给定此输入字符串: 例如,其中一个主要问题是观测器的动态性 假设速度比状态反馈控制器快, 这将导致数值上的困难(Astrom和Wittenmark,1997)。 此外,当流程约束被激活时 将导致闭环控制性能的显著恶化 很明显,这种非线性在控制中占主导地位 系统(Tenny、Rawlings和Wright,2004年)。因此,这是必要的 制定能够解决上述问题的方法 我想摘录1997和2004 注: 年份信息仅以四位数字显示 很可能以句号(句

我有一个类似于下面的内容,我只想选择年份信息作为字符串值

给定此输入字符串:

例如,其中一个主要问题是观测器的动态性 假设速度比状态反馈控制器快, 这将导致数值上的困难(Astrom和Wittenmark,1997)。 此外,当流程约束被激活时 将导致闭环控制性能的显著恶化 很明显,这种非线性在控制中占主导地位 系统(Tenny、Rawlings和Wright,2004年)。因此,这是必要的 制定能够解决上述问题的方法

我想摘录
1997
2004

注:

  • 年份信息仅以四位数字显示
  • 很可能以句号(句号)或括号结束
  • 它可能发生在本段中的任何地方

  • 好吧,我建议你使用下面的正则表达式

     ((19|20)\d{2})
    

    在.NET中还支持命名组,因此下面也是一种方便的匹配模式的方法

    \b(?<Years>(19|20)\d{2})\b
    
    var years=Regex.Matches(输入@“\D(\D{4})\D”)
    .Cast()
    .Select(m=>m.Groups[1]。值)
    .ToArray();
    
    你的年龄有限制吗?也就是说,没有比1900年更古老的东西了?还是1800?这会让你更精确一点

    Regex regex = new Regex(@" (19|20)\d\d\))") 
    
    MatchCollection years = regex.Matches(your_input);
    
    我认为正则表达式将匹配1900年代或2000年代的任何日期,这些日期前面有空格,并且以a结尾)

    然后,您可以迭代MatchCollection,以获取所有匹配的实例

    试试这个
    \d\d\d\d[\)\]\.]
    regex


    这将搜索以
    ]
    结尾的所有4位数字。您可以使用正则表达式。类似于
    ^[12][0-9]{3}$
    的内容将验证您的年份

    Match match = Regex.Match(input, "^[12][0-9]{3}$");
    

    “很可能”没有帮助。你需要比这更明确的东西。@KshitijMehta+1。也许并不是所有的4位数字都以括号结尾,实际上是一个“年”。我想你应该用正则表达式来表示这一点……我有一些数据,其中包含参考书的详细信息和作者姓名,如(Deepak G.2012.无线通信网络)基于此,我得到了一个作者的名字作为stringauthorname,用于比较内容和引用。现在,我想将这两个条件与作者姓名以及年份信息作为字符串值进行比较;字符串[]strAuthorslist=strAuthorsPart[0]。拆分(',');字符串[]strAuthor=strAuthorslist[0]。拆分(“”);如何获得年度信息进行比较?我猜提供的样本只是。。。样品。你应该比只从19或20开始的年份更包容。好的模式,但要摆脱
    ^
    $
    。字符串长度超过4个符号,并且该模式可能出现在该行的任何位置。此外,OP不想验证,他想检索。
    var years = Regex.Matches(input, @"\D(\d{4})\D")
        .Cast<Match>()
        .Select(m => m.Groups[1].Value)
        .ToArray();
    
    Regex regex = new Regex(@" (19|20)\d\d\))") 
    
    MatchCollection years = regex.Matches(your_input);
    
    Match match = Regex.Match(input, "^[12][0-9]{3}$");