如何在Java中从字符串中分离双精度值

时间:2018-10-16 05:14:49

标签: java split

public class SplitTest { 
    public static void main(String args[]) 
    { 
        String str = "32.85k"; 
        String[] arrOfStr = str.split("k", 10); 

        for (String a : arrOfStr) 
            System.out.println(a); 
    } 
} 

我的输出是32.85K,我需要我的输出是32.85,并且'k'分开

4 个答案:

答案 0 :(得分:1)

一种选择是使用以下外观进行拆分:

(?<=\d)(?=[A-Za-z])

这表示要在字符串中的任意位置拆分,其中之前是数字,后面是小写/大写字母。

String str = "32.85k"; 
String[] arrOfStr = str.split("(?<=\\d)(?=[A-Za-z])");

for (String a : arrOfStr)  {
    System.out.println(a); 
}

答案 1 :(得分:1)

如果您确定该字符串具有number dot number K模式, 您可以只使用replace方法

String str = "32.85k"; 
String str2 = str.replace("k",""); // will return "32.85"

答案 2 :(得分:0)

您可以使用此正则表达式代码来实现,

public static void main(String[] args) throws IOException {
        String str = "32.85k";
        Pattern p = Pattern.compile("(\\d+\\.\\d+)([a-zA-Z]+)");
        Matcher m = p.matcher(str);
        if (m.matches()) {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
        }
    }

答案 3 :(得分:0)

如果您知道字符串将是一个字符长,则可以将substring(0,length-1)用作double,并将substring(length -1,length)用作String。

如果您不知道字符串的大小,则必须使用Regex。

Matcher m = Pattern.compile("(\\d+\\.\\d+)(\.)")
while(m.find()){ 
    double d = Double.parseDouble(m.group(1));
    String unity = m.group(2);
}
相关问题