繁体   English   中英

检查字符串中的数字是否在C#中包含有效年份

[英]Check if a number in a string contains a valid year in c#

我有以下字符串,需要确保字符串中的数字是有效年份。 因此,在这种情况下,2014年。

var notesField = "Payment for the month ending 30 Nov 2014";
char[] whitespace = new char[] { ' ', '\t' };
string[] text = notesField.Split(
                          whitespace,
                          StringSplitOptions.RemoveEmptyEntries
                          );

您不能-从理论上讲,任何正整数都可能是有效的年份。 您需要对“什么是有效年份”做出明智的定义,例如“ 2005至2020之间的4位数字”(例如,如果您只希望看到最近或不久的将来的日期)。

这当然不处理"Bob gave Alice 2014 cows"的情况下-来解决这个你可以尝试是聪明的,并做一些基本的日期解析(如识别"30 Nov"你的字符串的一部分),但是一般这种一个很难解决的问题 -考虑一下如果您的系统遇到名为“ June”的人会发生什么?

处理此问题的最佳方法是对输入内容设置限制,以使验证更加容易。 理想情况下,您将提供一个专门用于输入日期的单独控件,但是,如果由于某些原因而无法使用文本输入,则可以查找"Payment for the month ending {Day} {Month} {Year}"形式"Payment for the month ending {Day} {Month} {Year}"字符串-您将对输入感到更轻松,因为预期输入将很难解析和验证。

绝对不建议使用这种方式来查找或验证年份,但是如果您确定句子中将恰好有一个四位数的单词,则可以使用如下所示的正则表达式匹配。

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        Regex regex = new Regex(@"\d{4}");
        Match match = regex.Match("Payment for the month ending 30 Nov 2014");
        if (match.Success)
        {
            Console.WriteLine(match.Value);
        }
    }
}

工作小提琴在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM