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