私は検索を行いましたが、説明した例、または私の正確な質問に関連する例を見つけることができませんでした。A38484B3838のように、AとBの文字をキャンセルし、その間の数字を読み取るプログラムを作成しようとしています。使ってみました
scanner.useDelimiter("[AB]");
しかし、それは機能しません。その後、無効な入力(私が読んでいるscanner.nextInt()
)をスローします。誰か助けてもらえますか?
public static void main(String[] args) {
String s = "A38484B3838";
Scanner scanner = new Scanner(s).useDelimiter("[AB]");
while (scanner.hasNextInt()) {
System.out.println(scanner.nextInt());
}
}
を生成します
38484
3838
それはあなたが期待する出力のようです。
正規表現を使用してみてください。それは本当にあなたの仕事を容易にすることができます。
public static void main(String[] args)
{
String str = "A38484B3838";
String regex = "(\\d+)";
Matcher m = Pattern.compile(regex).matcher(str);
ArrayList<Integer> list = new ArrayList<Integer>();
while (m.find()) {
list.add(Integer.valueOf(m.group()));
}
System.out.println(list);
}
上記のプログラムの出力:
[38484、3838]