2013-02-01 115 views
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。 我只想要數字分裂,如果它有小數,如何解決這個問題。

+0

你從哪裏得到這個字符串? – Ekonion

+0

什麼是您的輸入保證?字符串是否總是以數字開頭? – Jason

+0

我從數據庫中獲取該字符串? –

回答

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

現在我面臨一個問題,當這個字符串是這樣的「406.9881米高度離地面」我能夠像這樣分裂406但我想要這樣的小數點後兩位406.98 –

+0

@RajaReddy PolamReddy:好的,然後試試這個。 ..''String [] _new = rhs.split(「。」);'u'll得到_new [1]作爲十進制前的值..然後你可以從字符串_new [2]得到前兩個字母。然後附加2個字符串.. – Deepzz

+0

是的工作謝謝。 –

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*$"); 
1

假設的數量始終是字符串的第一部分:

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

之後,您可以使用字符串Formatter來獲得所需的數字表示形式。

2

你可以使用正則表達式來代替Deepzz的方法來處理這種情況,這將處理'。'的情況。在字符串的後面部分,我在下面包含了一個例子。從你的問題中不清楚你是否真的想保留字符串的一部分,但你可以添加第二個組到註冊表編輯器來捕獲它。

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"); 
    } 
} 
+0

這也是一個很好的解決方案,兩種解決方案都適合我。非常感謝.. –

1

這會工作時,你知道數字附近的字符串,與int和雙數字以及。

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); 
+0

這是字符串米從地面高度是不是所有值的常見 –

+0

但我認爲這是一個自動生成的字符串,ansd你有幾個窗體,但多數民衆贊成是確切的。然後嘗試更換所有,如果你有5個。比選擇所有選項更快,比所有時間檢查。-s更快。 – Arnold