2017-04-09 5 views
0

私の入力文字列は、行のスプリットCSVとJavaで異なるアレイにおける店舗

12.8478746,77.6632938,5:20:38 PM 
12.8478746,77.6632938,5:20:49 PM 
12.8478746,77.6632938,5:40:05 PM 
................................ 
12.8478746,77.6632938,5:40:14 PM 

番号が不明な形式です。私は文字列を解析し、それを(double lat、double long、string time)のように保存する必要があります。また、(lat、long、time)を引数として関数呼び出しを行う必要があります.nは入力文字列の行数に依存します。どうすればいいの?

これは私が試したものです:

String[] lines = result.split("\\s+"); // split on new lines 

    for (int i = 0; i < lines.length; i++) { 
     String[] temp = lines[i].split("\\s*,\\s*"); 
      double lat = Double.parseDouble(temp[0]); 
      double lo = Double.parseDouble(temp[1]); 
      AddMarker(lat,lo,temp[2]); 
    } 

この文句を言わない仕事「5時20分38秒PM」の各行が分離され、午前5時20分38秒とPMの間、私の入力にスペースがあるので、スペースで。 だから、私はエラーを取得しています:無効な二重の「PM」

+1

が問題を解決する、またはあなたのためのコードを書くのか?あなたがすでに試したことを見てみたいので、 –

+0

あなたは分割を使って簡単に解決できますし、正規表現さえすれば正規表現は素晴らしいと思うでしょう=)。私はあなたのためにそれを解決しようとしていましたが、ええ、私はcricket_007に同意します、何をしましたか? – Yussef

+0

単純な正規表現を使って入力文字列を分割することができます。格納するために、プロパティlat、long、およびtimeを持つクラスを作成し、そのリストなどを維持することができます。 –

答えて

0

は何をする必要がを分割と異なる動作をすることで、それは区切り文字を受け入れる必要があり、正規表現としてそれを扱うことはありません。 :

String[] lines = result.split("\n"); // split on new lines 

または可能性:

String[] lines = result.split("\r\n"); 

も:

String[] temp = lines[i].split(","); 

&( "5:20:38 PM")の日付を文字列として保存する場合は、すでに行ったようにtemp [2]を渡します。 DateTimeなどで解析する場合は、this linkを参照してください。

+1

個人的に、実際のCSVパーサーを使用してください。生コンマで分割することは常にベストな方法ではありません –

0

正規表現を使用する必要があります。例:

final String regex = "(.*),(.*),(.*)"; 
    final String string = "12.8478746,77.6632938,5:20:38 PM"; 

    final Pattern pattern = Pattern.compile(regex); 
    final Matcher matcher = pattern.matcher(string); 

    matcher.find(); 

    double lat = Double.valueOf(matcher.group(1)); 
    double lo = Double.valueOf(matcher.group(2)); 
    String time = matcher.group(3); 

    System.out.println("LAT: "+lat); 
    System.out.println("LO: "+lo); 
    System.out.println("TIME: "+time); 

結果:

LAT: 12.8478746 
LO: 77.6632938 
TIME: 5:20:38 PM 
+0

CSVレコードには正規表現が必要ありません –

+0

はい、パースするCSVファイルの場合は、Apache Common CSV(https://commons.apache)のような実際のCSVパーサーを使用してください。 org/proper/commons-csv/archives/1.4/apidocs/index.html)。 – fandango

関連する問題