1

私のプログラムでは、さまざまな日付をループする必要があります。私はこのプログラムを Java で作成しており、リーダーの使用経験は少しありますが、どのリーダーがこのタスクを最もよく完了するか、または別のクラスがより適切に機能するかどうかはわかりません。日付は、次の形式でテキスト ファイルに入力されます。

1/1/2013 to 1/7/2013
1/8/2013 to 1/15/2013

または、このようなもの。ループ用に日付の各範囲を 6 つのローカル変数に分割し、次のループ用に変更する必要があります。変数は、たとえば次のようにコーディングされます。

private static String startingMonth = "1";
  private static String startingDay = "1";
  private static String startingYear = "2013";
  private static String endingMonth = "1";
  private static String endingDay = "7";
  private static String endingYear = "2013";

これは、検索する区切り文字をいくつか作成して実行できると思いますが、これが最も簡単な方法かどうかはわかりません。助けを求めてこの投稿を見てきましたが、関連する答えが見つからないようです。これについて最善の方法は何ですか?

4

2 に答える 2

0

いくつかのオプションがあります。

スキャナーを使用して、区切り文字にスラッシュを含めるように設定できます。値を文字列ではなく整数にしたい場合は、単に使用してくださいsc.nextInt()

Scanner sc = new Scanner(input).useDelimiter("\\s*|/");
// You can skip the loop to just read a single line.
while(sc.hasNext()) {
  startingMonth = sc.next();
  startingDay = sc.next();
  startingYear = sc.next();
  // skip "to"
  sc.next()
  endingMonth = sc.next();
  endingDay = sc.next();
  endingYear = sc.next();
}

アルファシンが示唆するように、正規表現を使用できますが、このケースはかなり単純なので、最初と最後のスペースを一致させるだけです。

String str = "1/1/2013 to 1/7/2013";
String startDate = str.substring(0,str.indexOf(" "));
String endDate = str.substring(str.lastIndexOf(" ")+1);¨
// The rest is the same:
String[] start = startDate.split("/");
System.out.println(start[0] + "-" + start[1] + "-" + start[2]);
String[] end = endDate.split("/");
System.out.println(end[0] + "-" + end[1] + "-" + end[2]);
于 2013-11-04T22:27:30.550 に答える