【问题标题】:To get the value after space in String Java在 String Java 中获取空格后的值
【发布时间】:2015-04-09 11:15:26
【问题描述】:

我有一串值。

喜欢

String line= "cpu  74608   2520   24433   1117073   6176   4054";

我只想提取这些值并将它们存储在不同的变量中。

有什么方法可以让我在每个空格后获得数值??

【问题讨论】:

  • 拆分方法可以帮助您。只需为不确定的 nr 个空格添加一个正则表达式作为分隔符,您将获得一个填充了您正在寻找的值作为结果的数组
  • 请注意,使用@Stultuske 的代码,您将获得一个字符串数组。如有必要,您必须将数据转换/解析为适当的 type

标签: java string extract


【解决方案1】:

您可以选择使用String.split 方法。它接受正则表达式,因此您可以跳过任意数量的空格:

String[] values = line.split("\\s*");

然后您必须将这些Strings 转换为您需要的值:

int firstNum = Integer.valueOf(values[1]);
// anything like this

如果您可以将其存储为数组/列表,但不能存储为不同的变量,那么您可能希望以这种方式提取所有数字(Java 8):

int[] numbers = Stream.of(values)
        .filter(str -> str.matches("-?\\d+"))
        .mapToInt(Integer::valueOf)
        .toArray();

也许,更简单的方法是使用Scanner

Scanner scanner = new Scanner(line);
String firstStr = scanner.next();
int firstNum = scanner.nextInt();
// and so on...

【讨论】:

  • 关于措辞的旁注:没有人必须使用 split() 来解决这个问题。还有其他选择;所以没有必要人为地把选项空间缩小到“分裂”。
  • 感谢运行@Dmitry
  • @Jägermeister 好的,我会修改措辞。
【解决方案2】:
    String input = "123 456 123 578";
    String[] numbers = input.split(" ");
    for (String s : numbers) {
        System.out.println(Integer.valueOf(s));
    }

输出:

123
456
123
578

【讨论】:

    【解决方案3】:

    您可以从将数据拆分为数组开始:

    String [] lineSplit = line.split("\\s+");
    

    然后开始将数据解析为单个变量:

    int foo = 0;
    for(int i = 0; i < lineSplit.length; i++) {
        if(lineSplit[i].matches("\\d+") {
            foo = Integer.parseInt(lineSplit[i]);
        }else {
            //Do something else...
        }
    }
    

    并针对不同的数据类型重复上述操作并添加变量等以获得所需的结果。

    【讨论】:

      【解决方案4】:

      是的,你可以。 使用String.split()Integer.parseInt() 如下所示:

          String[] split = line.split("\\s+");
          List<Integer> numbers = new ArrayList<Integer>();
          for (String num: split) {
              try {
                  numbers.add(Integer.parseInt(num));
              } catch (NumberFormatException ex) {
                  // not a number
              }
          }
      

      【讨论】:

        【解决方案5】:
        String thisString="Hello world";
        
        String[] parts = theString.split(" ");
        String first = parts[0];//"hello"
        String second = parts[1];//"World"
        

        【讨论】:

          猜你喜欢
          • 2016-12-26
          • 1970-01-01
          • 1970-01-01
          • 2014-10-04
          • 2019-06-29
          • 1970-01-01
          • 1970-01-01
          • 2022-12-03
          • 1970-01-01
          相关资源
          最近更新 更多