1

形式の文字列がありMASTER CARD 01/01/2012、日付部分を個別に取得する必要があります。

場合VISA 01/01/2012によっては、スペースで分割しようとしましたが、 の場合のようにスペースが 2 つあると行き詰まりましたMASTER CARD 01/01/2012

どんな助けでも大歓迎です。

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

7 に答える 7

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 に答える
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 に答える
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 に答える
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 に答える