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