-5

ここで私の問題

Webサービスから値を取得するこの文字列があります.....

"2000-07-01 14:29:12","2020-07-01 14:29:12",,"物件検査","maryam.com","Bakar","Maryam","915ae8fa7cdb44b3-1368080159272 ","2013/05/21 07:28:59","2013/05/09 06:15:59","物件検査","2","","","",""," ","","","","","","","","","","","","","","","","", "","05/09/2013","","","","","","05/09/2013","","False","False","False","間違い"、""、""、""、""、""、"","","","","","False","","","False","","","","","","","", "","","","","","","","","","","05/09/2013","","","","", "","","","","","","2013 年 5 月 9 日","","1.5678106,103.6354891","","",""","","","","","","","","2013 年 5 月 9 日","","","","","",""," ","","","","2013 年 5 月 9 日","","1.5678106,103.6354891","","",""","","","","","","","","2013 年 5 月 9 日","","","","","",""," ","","","","2013 年 5 月 9 日","","1.5678106,103.6354891","","",""

現在、私は使用してすべてのデータを分割することができます

StringTokenizer stringtokenizer = new StringTokenizer(gabung[rline], ",");

しかし、1番目の文字列から12番目の文字列までの文字列値は必要ありません

> "2000-07-01 14:29:12","2020-07-01 14:29:12",,"Property
> Inspection","maryam.com","Bakar","Maryam","915ae8fa7cdb44b3-1368080159272","05/21/2013
> 07:28:59","05/09/2013 06:15:59","Property Inspection","2",

しかし、12番目の文字列の後の次の値が必要です..

私がしたことは、文字列分割と「、」を使用した分割とカウンター..を使用して、12番目の文字列かどうかをカウントすることです

代わりにカウンターを使用します..もっと良い解決策はありますか?私は正規表現をあまり理解していません。

4

3 に答える 3

1

12番目の値のみが必要な場合

を使用split: (非常に単純に、少し非効率的ですが、おそらくそれほど悪くはありません。製品コードを作成していない限り、他に気にすることはありません)

System.out.println(str.split(",")[12]);

を使用してindexOf: (やや複雑で、より効率的)

int index = 0;
for (int i = 0; i < 12; i++)
   index = str.indexOf(',', index) + 1;
System.out.println(str.substring(index, str.indexOf(',', index)));

正規表現の使用: (おそらく、価値があるよりも複雑です)

Pattern pattern = Pattern.compile("^(?:[^,]*,){12}([^,]*)");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
    System.out.println(matcher.group(1));

12番目の値からすべてが必要な場合

使用indexOf:

int index = 0;
for (int i = 0; i < 12; i++)
   index = str.indexOf(',', index) + 1;
System.out.println(str.substring(index));

正規表現の使用:

Pattern pattern = Pattern.compile("^(?:[^,]*,){12}(.*)");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
    System.out.println(matcher.group(1));

テスト

Java 正規表現の詳細については、このページを確認してください。

于 2013-05-24T18:45:44.253 に答える
0

,各文字列を区切る94個の数字が常にある場合..この正規表現で入力を分割できます

,(?=(?:[^,]*,){82}[^,]*$)

そう

String[] output = inputString.split(aboveRegex);
output[1];//your required value

また

最初の 12 個の文字列について確信がある場合は、この正規表現と一致させることができます

(?:[^,]*,){12}(.*)$//group1 captures your required data
于 2013-05-24T17:37:50.770 に答える