次のような文字列からいくつかの整数を抽出する必要があります。
22:43:12:45
22、43、12、および 45 を個別の整数として抽出する必要があります。: まで読み取り、22 を抽出するには、文字列メソッドまたはスキャナー メソッドを使用する必要があります。
最初の部分まで抽出できます。問題ありませんが、その後どうすればよいかはわかりません。
どんな助けでも大歓迎です。
次のような文字列からいくつかの整数を抽出する必要があります。
22:43:12:45
22、43、12、および 45 を個別の整数として抽出する必要があります。: まで読み取り、22 を抽出するには、文字列メソッドまたはスキャナー メソッドを使用する必要があります。
最初の部分まで抽出できます。問題ありませんが、その後どうすればよいかはわかりません。
どんな助けでも大歓迎です。
String[] parts = str.split(":");
int[] numbers = new int[parts.length];
この String 配列を反復処理して、整数の配列を取得します。
int index = 0;
for(String part : parts)
numbers[index++] = Integer.parseInt(part);
indexOf
とsubstring
の方法のみを使用できますString
:
String text = "22:43:12:45";
int start = 0;
int colon;
while (start < text.length()) {
colon = text.indexOf(':', start);
if (colon < 0) {
colon = text.length();
}
// You can store the returned value somewhere, in a list for example
Integer.parseInt(text.substring(start, colon)));
start = colon + 1;
};
スキャナーの使用はさらに簡単です。
String text = "22:43:12:45";
Scanner scanner = new Scanner(text);
scanner.useDelimiter(":");
while (scanner.hasNext()) {
// Store the returned value somewhere to use it
scanner.nextInt();
}
ただし、String.split
これが最短の解決策です。
String.split メソッドを見てください。正規表現を指定すると、このメソッドはそれに基づいて文字列を分割します。あなたの場合、正規表現は「:」です
String s ="22:43:12:45";
int i =0;
for (String s1 : s.split(":")) { // For each string in the resulting split array
i = Integer.parseInt(s1);
System.out.println(i);
}
分割は、文字列が区切られた文字列配列を返します。したがって、この場合、結果の文字列配列は、0 番目の位置に「22」、最初の位置に「43」というようになります。これらを整数に変換するには、文字列を取り、同等の int を与える parseInt メソッドを使用できます。
次のような正規表現を作成します
(\d\d):(\d\d):(\d\d):(\d\d)