1

我有一个格式的字符串MASTER CARD 01/01/2012,我需要单独获取日期部分。

有时可能是VISA 01/01/2012,我尝试过按空格分割,但是当有两个空格时就卡住了,例如MASTER CARD 01/01/2012.

任何帮助将非常感激;

string date = e.Brick.Text;
string[] dates = date.Split(' ');
4

7 回答 7

1

您的字符串的外观,您将在数组中的最后一个元素中获得日期。

//dates[dates.Length-1] should have date

    string date = "MASTER CARD 01/01/2012";
    string[] dates = date.Split(' ');
    Console.WriteLine(dates[dates.Length - 1]);

一个适当的解决方案应该是根据 DateTime 检查每个项目,在下一行

DateTime tempDs = new DateTime();
            foreach (string str in dates)
            {

                if (DateTime.TryParse(str, out tempDs))
                {
                    Console.WriteLine("Found Date");
                }
            }
于 2012-05-04T05:19:31.193 回答
1

假设各种卡片的所有日期都具有相似的格式,正则表达式可能是一个可行的选择。

using System.Text.RegularExpressions;

Match mDate = Regex.Match(e.Brick.Text, @"\b(?<date>(?:\d{1,2}[\\/-]){2}\d{4})\b", RegexOptions.Compiled);
if (mDate.Success)
{
    MessageBox.Show(string.Format("Date: {0}", mDate.Groups["date"].Value));
}
于 2012-05-04T06:01:38.533 回答
0

您可以使用您的代码。

如果日期总是在字符串的末尾,你可以做类似的事情

year = dates[dates.Length-1]

依此类推,月日

于 2012-05-04T05:21:34.587 回答
0

按空格分割并使用DateTime.TryParse方法解析日期。对于 VISA、MASTER 和 CARD,该方法应该失败;但它将成功用于字符串的日期部分。

于 2012-05-04T05:21:44.897 回答
0

这是另一种选择:

string date = e.Brick.Text.Substring(e.Brick.Text.LastIndexOf(' ')+1);
于 2012-05-04T05:25:13.213 回答
0

这应该可以解决问题。

public string ExtractDateTimeString(string s){

    return s.Split(' ').Where(x => 
            {
                DateTime o;
                return DateTime.TryParse(x, out o);
            }).FirstOrDefault();
}
于 2012-05-04T05:25:33.920 回答
0

或者另一种方式:

        string text = "MASTER CARD 4.5.2012";
        string[] split = text.Split(' ');

        string mc = "";
        string date = ""; //when you get this value, you can easily convert to date if you need it

        foreach (string str in split)
        {
            if (char.IsNumber(str[0]))
            {
                date = str;
                mc = mc.Remove(mc.Length - 1, 1);
            }
            else
                mc += str + " ";
        }
于 2012-05-04T05:58:18.033 回答