2012-03-03 11 views
5

誰かが私に迷惑をかけている問題についてアドバイスできますか?Javaで文字列を分割する

integer integer integer block_of_text 

3つの正または負であり得る整数、各々が単一のスペースで分離され、ブロックの前に、別の空間である:私は次のように構成されたメソッドからの文字列を返すJava .jarファイルを持っています任意の文字で構成されていてもよいが、キャリッジリターンを含むべきではないテキストのこと。今では、最初の整数のそれぞれの空白文字まで部分文字列を読み込み、残りのテキストを単純に読み込むことができます。

テキストのブロックは、その内容に関係なく分割する必要はありません。

誰にでも良い選択肢を提案できますか?

回答者に感謝します。これは私に頭痛を救った!

+0

block_of_textに改行文字を含むことはできますか?具体的には、Linux/OS Xでは '\ n'、Windowsでは '\ r \ n'です。私はあなたがどんなキャラクターもそこに存在する可能性があると言ったので、はいと思う –

+0

テキストブロックにスペースが含まれる可能性がありますか? – sgowd

+0

キャリッジリターンと改行 - いいえ。スペース - はい。 –

答えて

11

あなたはString#split(regex,limit) which takes a limitのフォームを使用することができ:

String s = "123 456 789 The rest of the string"; 
String ss[] = s.split(" ", 4); 
// ss = {"123", "456", "789", "The rest of the string"}; 
+0

私はこのような分割を使用することに気づいていませんでした。便利なスキャナーの使用のためには –

7

あなたがセパレータとして空間とString.splitを使用し、4の制限を設定することができる:

String[] result = s.split(" ", 4); 

あなたはまたScannerを使用することができます。これはテキストを分割するだけでなく、整数をintに解析します。あなたがintStringとして3つの整数を必要とするかどうかに応じて、あなたはこれがより便利かもしれません:

Scanner scanner = new Scanner(s); 
int value1 = scanner.nextInt(); 
int value2 = scanner.nextInt(); 
int value3 = scanner.nextInt(); 
scanner.skip(" "); 
String text = scanner.nextLine(); 

それがオンラインで作業を参照してください:ideone

+0

+1。 – maerics

3

1つの簡単な方法(block_of_textに改行がないと言ったので)は、Scannerを使用することです。特定の区切りに基づいて入力を分割し、適切な型を戻すツールです。たとえば、メソッドhasNextInt()nextInt()を使用して、入力内の整数をチェックし、ストリームから実際にそれをプルすることができます。例えば

Scanner scanner = new Scanner(System.in); // Arg could be a String, another InputStream, etc 
int[] values = new int[3]; 
values[0] = scanner.nextInt(); 
values[1] = scanner.nextInt(); 
... 
String description = scanner.nextLine(); 

あなたは、入力ストリームを排出するまで、これを使用して、あなたが必要とするような値を使用して始めることができます。ここで

Scannerの使用方法の詳細は、次のとおりです。If ... is not an int {

0

文字列を分割する最も簡単な方法はsplit方法を使用することです。


String gen = "some texts here"; 
String spt[] = gen.split(" "); //This will split the string gen around the spaces and stores them into the given string array 

は、あなたの質問に応じて整数値を削除し、私はこれが役立つだろう願っています3.
からの配列インデックスを開始します。