様々なクラス⑤:Scannerクラス
Stringクラスのsplit()
split()メソッドとは
Stringクラスには、引数に指定した区切り文字で文字列を分割し、配列として返すsplit()メソッドがあります。
split()メソッドの書式
String[] 配列名 = 文字列.split("区切り文字");
SampleClass01.java
package class5;
public class SampleClass01 {
public static void main(String[] args) {
String str1 = "one,two,three";
String str2 = "apple orange pineapple";
String[] strarray1 = str1.split(",");
String[] strarray2 = str2.split(" ");
for(String s : strarray1){
System.out.println(s);
}
System.out.println();
for(String s : strarray2){
System.out.println(s);
}
}
}
one
two
three
apple
orange
pineapple
two
three
apple
orange
pineapple
Scannerクラス
Scannerクラスとは
Scannerクラス(java.utilパッケージ)は、区切り文字のパターンを使って文字列をトークン(単語)に分割して扱うクラスです。デフォルトの区切り文字は空白ですが、useDelimiter()で変更できます。
| 用途 | 記述例 |
|---|---|
| 文字列の読み込み | new Scanner(文字列) |
| キーボード入力 | new Scanner(System.in) |
| ファイル読み込み | new Scanner(new FileReader("ファイル名")) |
| 区切り文字の設定 | useDelimiter("区切り文字") |
| トークンの有無確認 | hasNext() |
| トークンの取得 | next() |
SampleClass02.java
package class5;
import java.util.*;
public class SampleClass02 {
public static void main(String[] args) {
String str1 = "one,two,three";
String str2 = "apple orange pineapple";
Scanner sc1 = new Scanner(str1);
sc1.useDelimiter(",");
while(sc1.hasNext()){
System.out.println(sc1.next());
}
System.out.println();
Scanner sc2 = new Scanner(str2);
while(sc2.hasNext()){
System.out.println(sc2.next());
}
sc1.close();
sc2.close();
}
}
one
two
three
apple
orange
pineapple
two
three
apple
orange
pineapple
SampleClass01と同じ結果が得られます。sc1はカンマ区切り、sc2はデフォルト(空白区切り)でトークン分割しています。
コンソールからの入力
System.inからの入力
ScannerにSystem.inを渡すと、キーボード入力を読み込めます。
SampleClass03.java
package class5;
import java.util.*;
public class SampleClass03 {
public static void main(String[] args) {
System.out.print("Input Data:");
Scanner scan = new Scanner(System.in);
int i = 1;
while(scan.hasNext()){
String str = scan.next();
System.out.println(i + " : "+ str);
i++;
}
}
}
Input Data:one two three four
1 : one
2 : two
3 : three
4 : four
1 : one
2 : two
3 : three
4 : four
ファイルの読み込み
CSVファイルの読み込み
ScannerにBufferedReaderとFileReaderを組み合わせると、CSVファイルなどの読み込みをより簡単に行えます。
SampleClass04.java
package class5;
import java.io.*;
import java.util.*;
public class SampleClass04 {
public static void main(String[] args) {
Scanner sc = null;
try{
sc = new Scanner(new BufferedReader(new FileReader("csvsample.csv")));
sc.useDelimiter(",");
while(sc.hasNext()){
System.out.print(sc.next() + " ");
}
}catch(FileNotFoundException e){
System.out.println("ファイルが見つかりません。");
}finally{
if(sc != null){
sc.close();
}
}
}
}
1 2 3
4 5 6
7 8 9
4 5 6
7 8 9
CSVファイルのカンマ区切りのデータをトークンとして順に読み出して表示します。