2

我想拆分这个字符串

String info = "0.542008835 meters height from ground";

从此我只想得到这样的两位小数 0.54

通过使用这个我得到了

String[] _new = rhs.split("(?<=\\G....)");

但是我在这里遇到问题,如果字符串不包含像这个字符串这样的小数

String info = "1 meters height from ground";

对于这个字符串,我在拆分字符串中得到最多前 ​​4 个字符,例如1 me. 如果有小数,我只想拆分数字,如何解决这个问题。

4

5 回答 5

7
if(info.contains("."))
{
       String[] _new = rhs.split("(?<=\\G....)");
}
于 2013-02-01T11:11:15.537 回答
3

我认为您可以在第一个值之后通过空格进行检查。看到这个 如果你得到空间然后只得到第一个字符。

要检查字符串是否包含空格,请使用 Matcher 并调用它的 find 方法。

Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher(s);
boolean found = matcher.find();

如果你想检查它是否只包含空格,那么你可以使用 String.matches:

boolean isWhitespace = s.matches("^\\s*$");
于 2013-02-01T11:15:53.770 回答
2

您可以使用正则表达式来替代 Deepzz 的方法,这将处理存在 '.' 的情况。在字符串的后面部分,我在下面包含了一个示例。您的问题尚不清楚您是否真的想要保留字符串的一部分,但您可以在 reg ex 中添加第二组来捕获它。

public static void main(String[] args) {
    final String test1 = "1.23 foo";
    final String test2 = "1 foo";
    final String test3 = "1.234 foo";
    final String test4 = "1.234 fo.o";
    final String test5 = "1 fo.o";
    getStartingDecimal(test1);
    getStartingDecimal(test2);
    getStartingDecimal(test3);
    getStartingDecimal(test4);
    getStartingDecimal(test5);

}

private static void getStartingDecimal(final String s) {
    System.out.print(s + " : ");
    Pattern pattern = Pattern.compile("^(\\d+\\.\\d\\d)");
    Matcher matcher = pattern.matcher(s);
    if(matcher.find()) {
        System.out.println(matcher.group(1));
    } else {
        System.out.println("Doesn't start with decimal");
    }
}
于 2013-02-01T11:21:29.933 回答
1

假设数字始终是字符串的第一部分:

String numStr = rhs.split(" ")[0];
Double num = Double.parseDouble(numStr);

之后,您可以使用字符串格式化程序来获得所需的数字表示。

于 2013-02-01T11:21:02.107 回答
1

当您知道数字附近的字符串以及 int 和 double 数字时,这将起作用。

    String a ="0.542008835 meters height from ground";
    String b = a.replace(" meters height from ground", "");
    int c = (int) ((Double.parseDouble(b))*100);
    double d = ((double)c/100);
于 2013-02-01T11:24:26.310 回答