1

我需要从如下所示的字符串中提取几个整数:

22:43:12:45

我需要提取 22、43、12 和 45 作为单独的整数。我需要使用字符串方法或扫描仪方法来读取直到:并提取 22。然后在第一个:和第二个:之间读取给我 43,依此类推。

我可以提取到第一个:没问题,但我知道之后该怎么做。

任何帮助将非常感激。

4

4 回答 4

3
String[] parts = str.split(":");
int[] numbers = new int[parts.length];

遍历此 String 数组以获取整数数组:

int index = 0;
for(String part : parts)
    numbers[index++] = Integer.parseInt(part);
于 2012-10-19T19:26:36.227 回答
0

您只能使用indexOfsubstring方法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;
};

使用 Scanner 更简单:

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是最短的解决方案

于 2012-10-19T20:46:48.070 回答
0

做一个像这样的正则表达式

(\d\d):(\d\d):(\d\d):(\d\d)
于 2012-10-19T19:25:39.013 回答
0

你应该看看 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”,依此类推。要将这些转换为整数,您可以使用 parseInt 方法,该方法接受一个字符串并给出等效的 int。

于 2012-10-19T19:43:05.990 回答