2012-09-27 14 views
5

私は配列Java文字列を '。'で分割する

for (int k ;k <gg;K++) 
    parts[k]; 

を印刷したいしかし、私のGGは常に0とされるよりも、私は

This is a test message 

を印刷したい

1. This is a test message 

私は

String delimiter="."; 
String[] parts = line.split(delimiter); 
int gg=parts.length; 

をしようとしています持っています。 私には何かがありません。 私が必要とするのは、番号と番号を削除することです。そして、白のスペース

数は、コード..あなたのためのループのために

String delimtor="\\."; // use this because . required to be skipped 
String[] parts = line.split(delimtor); 

以下の1(または)5桁の数字

+3

Splitは正規表現が必要で、 '.'は特別な意味を持っています。 – assylias

+0

ステートメントは奇妙に見えます。 for(int k = 0; k Javier

答えて

11

、あなたは.文字の特別な意味を破る必要があります。

.正規表現のcharは「任意の文字」なので、あなたの分割は「任意の文字」に従って分割されます。これは明らかにあなたの後ろではありません。あなたはhave a look at the tutorialできる事前定義された文字クラスの詳細については、区切り文字

として

使用"\\."。一般の正規表現の詳細については
(上記を含んでいる)あなたはthis tutorial


EDIT試すことができます。
P.S.をあなたは何をしているのですか(番号を削除する)は、String.replaceAll()メソッドを使用して、1ライナーで達成できます。

System.out.println(line.replaceAll("[0-9]+\\.\\s+", "")); 

は、あなたの入力例えば出力

This is a test message 

を提供します。

アイデアは:[0-9]は任意の数字です。 - は、0より大きい数のものがあることを示します。\\.はドット(上述のように破損しています)であり、\\s+は少なくとも1つのスペースです。
すべてが空の文字列に置き換えられています。

ただし、"1. this is a 2. test"のような文字列の場合、「これはテストです」と表示され、「2」も削除されるため、実際に後であるかどうかは慎重に検討してください。

4

使用することができます。あなたが区切り文字として"."を使用している

for (int k=0 ;k <gg.length;K++) 
    parts[k]; 
+0

コンパイルされません。(編集されたバージョン) – amit

+0

スレッド "main" java.lang.ArrayIndexOutOfBoundsExceptionでこの例外が発生しました。何かを考慮する必要がありますか? –

+0

私はlooplik ethatをやった –

2

この

String delimtor = "\\."; 

を試してみてください ""正規表現には特別な意味があります。

1

プレフィックス番号を削除しようとしている場合は、1行で行うことができます。実際に複数の点で分割したいのかどうかはわかりません。プレフィックスだけの場合は、1行で指定することができます。

String s = "1. with single digit"; 
String s2 = "999. with multiple digits"; 
String s3 = "999. with multiple digits . and . dots"; 

assertEquals("with single digit", (s.substring(s.indexOf(".") + 1).trim())); 
assertEquals("with multiple digits", (s2.substring(s2.indexOf(".") + 1).trim())); 
assertEquals("with multiple digits . and . dots", (s3.substring(s3.indexOf(".") + 1).trim()));