如何拆分这个字符串?

时间:2013-02-01 11:08:15

标签: android string split

我想分割这个字符串

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。 如果它有小数,我只想要分割数字,如何解决这个问题。

5 个答案:

答案 0 :(得分:7)

if(info.contains("."))
{
       String[] _new = rhs.split("(?<=\\G....)");
}

答案 1 :(得分:4)

我认为您可以在第一个值之后通过空格检查。见this 如果你得到了空间,那么只获得第一个字符。

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

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

如果要检查它是否只包含空格,则可以使用String.matches:

boolean isWhitespace = s.matches("^\\s*$");

答案 2 :(得分:2)

您可以使用正则表达式来替代Deepzz的方法来执行此操作,这将处理存在“。”的情况。在String的后面部分,我在下面列举了一个例子。从你的问题中不清楚你是否真的想要保留String的一部分,但你可以在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");
    }
}

答案 3 :(得分:1)

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

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

之后,您可以使用字符串Formatter来获得所需的数字表示。

答案 4 :(得分: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);