【问题标题】:How to determine that there is date in the string or not with different date format?如何确定字符串中是否有日期格式不同的日期?
【发布时间】:2010-05-08 09:39:54
【问题描述】:

我需要检查字符串中是否有日期。

FUTIDX 26FEB2009 NIFTY 0 -- There is date in the string.

FUTIDX MINIFTY 30 Jul 2009 -- There is date in the string.

FUTSTK ONGC 27 Mar 2008 -- There is date in the string.

我该怎么做?

【问题讨论】:

  • 你已经完全改变了原来的问题。现在我的回答与你的问题完全无关。你应该只是写一个新问题。
  • @dboarman,对不起,但是因为我得到了一个适用于 2009 年 2 月 26 日但不适用于 26FEB2009 的正则表达式,所以我改变了问题。而且你的回答对我还是很有用的。
  • 感谢您回滚您的问题...
  • @dboarman,我应该谢谢你先生...
  • 你有(接受我的回答)。不想让你认为我因为你改变问题而生气。我已根据此事件在meta.stackexchange.com/questions/49248/… 提交了功能请求。一切都好...

标签: c# regex date


【解决方案1】:

@danish 告诉您的是,您需要尝试 RegEx(或正则表达式)。那里有很多网站 - MSDNPractical Parsing; Learn Regular Expressions - 仅举几例。

如果您希望您的日期只有 2 种特定格式,那么我们只有 2 种模式需要匹配。您的示例数据:

FUTIDX 26FEB2009 NIFTY 0 -- 字符串中有日期。

FUTIDX MINIFTY 30 Jul 2009 -- 字符串中有日期。

FUTSTK ONGC 27 Mar 2008 -- 字符串中有日期。

为我们提供了 2 种模式:

  1. ddMMMyyyy
  2. dd Mmm yyyy

下面的示例将只查找简短形式的一个月。这应该足以帮助您继续前进。

using System;
using System.Text.RegularExpressions;

namespace regexmonthtest
{
    class MainClass
    {

            // in your class, define 2 string patterns
        static string pattern = @"(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)";

        public static void Main (string[] args)
        {
            Console.WriteLine (HasDate("FUTIDX 26FEB2009 NIFTY 0"));
            Console.WriteLine (HasDate("FUTSTK MINIFTY 30 Jul 2009"));
            Console.WriteLine (HasDate("FUTIDX 26api1234 NIFTY 0"));
        }


        public static bool HasDate (string textIn)
        {
            textIn = textIn.ToLower();
            Console.Write(textIn + '\t');

            return (Regex.Match(textIn, pattern).Success);
        }
    }
}

输出:

futidx 26feb2009 漂亮 0 真
futstk minifty 2009 年 7 月 30 日 True
futidx 26api1234 漂亮 0 错误

【讨论】:

    【解决方案2】:

    您支持的所有格式是什么?根据具体情况,您将需要一个解析器或一个正则表达式(取决于格式)来获取日期。

    编辑:所以它总是 DD MON YYYY 或 DDMONYYYY。只需有一个正则表达式从字符串中过滤掉这部分就可以了。

    检查this 表达式。稍微修改一下就可以了。

    【讨论】:

      【解决方案3】:

      您可以使用 DateTime.TryParse() 方法。但在您需要从垃圾字符中清除字符串之前。

      另一种方法是使用自定义的表达式规则编写自己的解析器。

      【讨论】:

      • @Harikrishna:我认为他的意思是删除除日期本身之外的所有内容。但是,如果你能够做到这一点,那么我认为你不会问你的问题。
      猜你喜欢
      • 2013-10-16
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多