【问题标题】:Convert String[] to long[]将 String[] 转换为 long[]
【发布时间】:2021-10-24 17:09:21
【问题描述】:

如何将String[] 转换为long[]

我有一个String[] inputArray,其中包含一个StringinputArray[31]。我想将该字符串拆分为特定的SPLIT_CHAR,从而得到String[],如下所示:

String[] numbersText = inputArray[31].split(SPLIT_CHAR);

现在,每个元素都代表一个我想解析为long 的数字,因此可以有效地接收long[]。我该怎么做?

【问题讨论】:

  • 见 Long.parseLong(String)
  • Arrays.stream(inputArray[31].split(SPLIT_CHAR)).mapToLong(Long::parseLong).toArray()
  • @QBrute Btw,有Pattern.compile(SPLIT_CHAR).splitAsStream(inputArray[31])... 来避免split 的中间String[] 数组。

标签: java arrays parsing split


【解决方案1】:

说明

您必须在拆分后主动迭代数组并使用Long.parseLong 解析每个单独的字符串。

请注意,如果任何元素实际上不是数字,则会抛出NumberFormatException


循环

这是一个带有简单循环的传统版本:

String[] numbersText = inputArray[31].split(SPLIT_CHAR);
long[] numbers = new long[numbersText.length];
for (int i = 0; i < numbers.length; i++) {
    numbers[i] = Long.parseLong(numbersText[i]);
}

流 API

这是一个使用流的现代解决方案:

long[] numbers = Pattern.compile(SPLIT_CHAR)
    .splitAsStream(inputArray[31])
    .mapToLong(Long::parseLong)
    .toArray();

只需 String[]long[]

为了问答,这里是一个稍微采用的版本,没有拆分和其他模糊,作为完整的例子:

String[] numbersText = { "0", "1230", "-6", "5" };
long[] numbers = Stream.of(numbersText)
    .mapToLong(Long::parseLong)
    .toArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2017-08-20
    • 1970-01-01
    • 2019-07-31
    • 2021-10-08
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多