形式のファイルから入力を取得する必要があります
2 (3,4) (5,6) 3 (6,5) (7,8)
整数値だけを変数に格納したいのですが、括弧とコンマは必要ないので、パターンマッチを使用してこれを取得するにはどうすればよいですか?
私は、正規表現を使用できる String メソッドの分割を好みます。タイプ ArrayList<Integer> の contents という名前のインスタンス変数をインスタンス化したと仮定して、ファイルからの入力の各行に対して実行するコードの例を次に示します。
public void readLine(String line) {
String delimiters = "[ ,()]+"; // regular expression
String[] tokens = line.split(delimiters);
for (String token : tokens) {
try {
Integer i = Integer.parseInt(token); // convert String to Integer
contents.add(i);
} catch (NumberFormatException e) {
// TODO: handle exception
}
}
}
split メソッドは、いくつかの余分な (空の) トークンを作成しますが、try/catch はそれを排除します。お役に立てれば。
を使用String#replaceAll("[^0-9]", "")
して、数値以外の文字を削除しInteger.valueOf(String)
、整数を取得できます。
を使用してファイルから直接整数を読み取り、 を使用java.util.Scanner
して区切り文字を指定できます。区切りScanner.useDelimiter(Pattern)
文字は正規表現になります ("[,() ]{1,}"
たとえば)。Scanner
メソッドhasNextInt()
とnextInt()
を使用して整数を読み取ることができます。