1

以下の形式の文字列があります

String str = "query at.dddimin ntoreturn:1 reslen:1833 nscanned:1  nquery: { like_symbol: \"SC!JNJ\" }  nreturned:1 bytes:1817";

出力が「 dddiminatになるように、上記のドットの後の単語を抽出する必要があります

私はこのようにしてみました

String[] result = str.split("\\.");

System.out.println(result[1]);

しかし、私が得ている出力は以下のとおりです

dddimin ntoreturn:1 reslen:1833 nscanned:1  nquery: { unique_symbol: "SC!JNJ" }  nreturned:1 bytes:1817

ドットの後の単語を取得する方法を教えてください。

4

4 に答える 4

5

文字列パターン マッチングの問題を解決する一般的な方法として、正規表現の使用を検討してください。次のコードでは、正規表現\.(\S+)は次のように述べています。ドットで始まり、その後にスペースではない 1 つ以上の文字が続く文字列の一致を検索し、グループ内のドットの後の文字をキャプチャします。Java では、これは次のように記述されます。

Pattern regex = Pattern.compile("\\.(\\S+)");
Matcher match = regex.matcher(str);
if (match.find())
    System.out.println(match.group(1));

match.group(1)式は期待される結果を返します。

dddimin
于 2013-09-07T18:14:30.237 に答える
3
int dot = str.indexOf('.')+1;
String result = str.substring(dot,str.substring(dot).indexOf(' '));
于 2013-09-07T18:10:51.930 に答える
0
int dot = str.indexOf('.');
String result = str.substring(dot + 1, dot + str.substring(dot).indexOf(' '));
于 2013-09-07T18:23:38.110 に答える
0

を使用するsplit()場合、この場合、正規表現をドットとスペースの両方で分割する必要があります。

String[] result = str.split("\\ |\\.");
assertEquals("dddimin", result[2]);
于 2013-09-07T18:14:06.123 に答える