我需要java的帮助。因为我有这样一个字符1.11€1.10€1.02€0.66€0.50我需要将这些字符添加到单独的变量,如double i = 1.11 double a = 1.10等等。
{{1}}
答案 0 :(得分:2)
这个问题有很多部分。
您已经使用JSoup完成了第一部分。
其次,使用String.split()来解析JSoup响应中的值。
String[] values = title.split("€");
最后,将值转换为double
更具挑战性,因为数字格式(带逗号)不会被Double.valueOf()
解析。相反,我们需要使用NumberFormat
,并使用它来解析字符串。
NumberFormat format = NumberFormat.getInstance(ITALY); // Italy chosen as it uses the comma format
Number number = format.parse(value.trim());
Double d = number.doubleValue();
所以把它们放在一起给出了:
String[] values = title.split("€");
List<Double> doubles = new ArrayList<>();
NumberFormat format = NumberFormat.getInstance(ITALY);
for (String s : values) {
Number number = format.parse(s.trim());
doubles.add(number.doubleValue());
}
System.out.println(doubles);
输出为[1.11, 1.1, 1.02, 0.66, 0.5]
。
答案 1 :(得分:1)
您可以使用String.split
和Stream
实用程序的组合获得表达式中的值列表:
List<Double> values = Arrays.stream(str.split("€")) // get a String[] and then a Stream<String>
.map(Double::valueOf) // cast every value to double
.collect(Collectors.toList()); // get a list of the double values
修改强>
如@AjahnCharles所示,我们可以使用map(Double::parseDouble),但它会返回原始double
,因此获得Stream<Double>
会有一些开销。阅读this以了解其中的差异。
答案 2 :(得分:0)
我可以帮助你解决拆分和转换问题,我不建议为每个项目/值创建一个新变量。如果它保存在列表中会更好。
String data = "1.11 € 1.10 € 1.02 € 0.66 € 0.50";
List<> dataList = new ArrayList<>();
//Splitting based on key
dataList = data.split("€");
for(int i=0;i<dataList.size();i++){
//Data is stored in a list in string format.
double d = Double.parseDouble( dataList[i]);
System.out.println(d);
}
注意::请忽略我使用手机输入的任何格式错误或拼写错误