如何从字符串中删除正在解析的 space?
How to remove space being parsed from string?
我想读取包含如下数字序列的文本文件:
1.000000 1:-0.362772 2:-0.314085 3:-0.177185 4:0.898650 5:-0.154588
目前,我正在阅读该行,并使用 split()
方法拆分数字并将数字存储到数组中。有 3 个变量将用于存储数组元素,output
、number
和 value
。
1.000000
将作为整数输出,[1, 2, 3, 4, 5]
将是数字数组,[-0.362772,-0.314085,-0.177185,0.898650,-0.154588]
将是值数组。
这是我的代码:
while (line != null) {
double output = 0;
inputs = new double[6];
String[] inputPairs = line.split(" ");
output = Double.parseDouble(inputPairs[0]);
for (int i = 1; i < inputPairs.length; i++) {
int components = Integer.parseInt(inputPairs[i].split(":")[0]);
double data = Double.parseDouble(inputPairs[i].split(":")[1]);
inputs[components] = data;
}
outputs[counter] = (int) output;
input[counter] = inputs;
counter++;
line = br.readLine();
}
但是,当我执行代码时出现了这个异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at testReadFile.main(testReadFile.java:32)
。
我注意到在第一个索引之后有一个额外的 space:1.000000 1:-0.362772
存储在数组的第二个元素中。
如何删除 space?我已经使用 trim()
但它不起作用。或者有没有办法删除包含 space
?
的数组 [2]
字符串 split
方法接受正则表达式,所以你可以这样做来分割多个空格
String[] inputPairs = line.split(" +");
这样做
while (line != null) {
if (line.trim().isEmpty()) {
continue;
}
double output = 0;
inputs = new double[6];
String[] inputPairs = line.split(" ");
output = Double.parseDouble(inputPairs[0]);
for (int i = 1; i < inputPairs.length; i++) {
int components = Integer.parseInt(inputPairs[i].split(":")[0]);
double data = Double.parseDouble(inputPairs[i].split(":")[1]);
inputs[components] = data;
}
outputs[counter] = (int) output;
input[counter] = inputs;
counter++;
line = br.readLine();
}
我想读取包含如下数字序列的文本文件:
1.000000 1:-0.362772 2:-0.314085 3:-0.177185 4:0.898650 5:-0.154588
目前,我正在阅读该行,并使用 split()
方法拆分数字并将数字存储到数组中。有 3 个变量将用于存储数组元素,output
、number
和 value
。
1.000000
将作为整数输出,[1, 2, 3, 4, 5]
将是数字数组,[-0.362772,-0.314085,-0.177185,0.898650,-0.154588]
将是值数组。
这是我的代码:
while (line != null) {
double output = 0;
inputs = new double[6];
String[] inputPairs = line.split(" ");
output = Double.parseDouble(inputPairs[0]);
for (int i = 1; i < inputPairs.length; i++) {
int components = Integer.parseInt(inputPairs[i].split(":")[0]);
double data = Double.parseDouble(inputPairs[i].split(":")[1]);
inputs[components] = data;
}
outputs[counter] = (int) output;
input[counter] = inputs;
counter++;
line = br.readLine();
}
但是,当我执行代码时出现了这个异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at testReadFile.main(testReadFile.java:32)
。
我注意到在第一个索引之后有一个额外的 space:1.000000 1:-0.362772
存储在数组的第二个元素中。
如何删除 space?我已经使用 trim()
但它不起作用。或者有没有办法删除包含 space
?
字符串 split
方法接受正则表达式,所以你可以这样做来分割多个空格
String[] inputPairs = line.split(" +");
这样做
while (line != null) {
if (line.trim().isEmpty()) {
continue;
}
double output = 0;
inputs = new double[6];
String[] inputPairs = line.split(" ");
output = Double.parseDouble(inputPairs[0]);
for (int i = 1; i < inputPairs.length; i++) {
int components = Integer.parseInt(inputPairs[i].split(":")[0]);
double data = Double.parseDouble(inputPairs[i].split(":")[1]);
inputs[components] = data;
}
outputs[counter] = (int) output;
input[counter] = inputs;
counter++;
line = br.readLine();
}