如何分割数字和符号JAVA

时间:2018-01-17 18:52:47

标签: java

我需要java的帮助。因为我有这样一个字符1.11€1.10€1.02€0.66€0.50我需要将这些字符添加到单独的变量,如double i = 1.11 double a = 1.10等等。

{{1}}

3 个答案:

答案 0 :(得分:2)

这个问题有很多部分。

  1. 获取数据
  2. 从数据中解析单个项目
  3. 将项目转换为可用数字
  4. 您已经使用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.splitStream实用程序的组合获得表达式中的值列表:

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);
 }

注意::请忽略我使用手机输入的任何格式错误或拼写错误