1

「07:30 am」の形式で時刻を取得する必要があります (大文字と小文字は区別されません)。これが「07:30am」の形式のファイルを読んでいます。最終的にはこれから DateTime を構築するので、午前/午後の部分の前にスペースを入れてこれを取得する必要があります。

これを使用して a または p の発生を検出できます。

if(startString.IndexOfAny("ap".ToCharArray()) != -1)
{

}

これを行う最善の方法は何ですか? スペースで連結できる2つの文字列になってしまうと思いますか? これを実現するために、上記のスニペットで Split を使用できますか?

アップデート:

DateTime の分と AM/PM の間にスペースを入れる必要があり、正規表現を使用したくありません。これまでのところ、ここで試したことは何もありません...

私が処理しなければならない実際の入力は、次の形式です。

RecDate: "04/30/2012"

RecTime: "05:30am"

am/pm 部分の前にスペースを入れて、これらから新しい DateTime オブジェクトを作成する必要があります。

4

2 に答える 2

5

次の 2 つの簡単な選択肢があります。

  1. RegEx を使用してフォーマットを修正します。

    string newTime = Regex.Replace(startString, @"(?<=[01]\d:[0-5]\d)(?=[ap]m)", " ");

  2. DateTime.ParseExact を使用して、時刻をそのままインポートします。

    DateTime newValue = DateTime.ParseExact( startString, "hh:mmtt", CultureInfo.InvariantCulture);

私は2番目のアプローチに部分的です。

mmと の間に区切り文字が定義されていないため、インバリアント カルチャを使用する必要がありttます。

于 2012-04-29T05:01:53.467 に答える
0

これに正規表現を使用しないのはなぜですか? (http://msdn.microsoft.com/de-de/library/system.text.regularexpressions.regex(v=vs.80).aspx)は、正規表現ウィザード(私はそうではありません)にとって簡単なことです)

于 2012-04-29T05:04:58.537 に答える