将 String[] 转换为 long[]
如何将 a 转换String[]为long[]?
我有一个String[] inputArray包含Stringat 的inputArray[31]。我想在特定的 上拆分该字符串SPLIT_CHAR,结果String[]如下:
String[] numbersText = inputArray[31].split(SPLIT_CHAR);
现在,每个元素都代表一个我想解析为 的数字long,因此可以有效地接收long[]. 我怎样才能做到这一点?
回答
解释
您必须在拆分后主动迭代数组并使用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();