2015-01-01 78 views
0

Here是一個很好的簡短的例子來過濾字符串爲十進制:過濾字符串爲十進制數

String str = "a12.334tyz.78x"; 
str = str.replaceAll("[^\\d.]", ""); 

,這使得12.334.78

但如何篩選這個第二小數部分?我有一個字符串valued 12345.67 doll.(注意最後一點)。所以我只需要12345.67

對不起,不僅僅是評論Óscar洛佩斯的答案,因爲沒有足夠的聲譽。

+0

兩個數字可以從'12.334.78'中提取。 12.344和.78是你需要的嗎? – sln

+0

sln,no。一個字符串可以是任何類型的,例如給定的字符串。事情是我必須得到一個點。 – kolyaseg

回答

0

我看着它,但不能確定。 Android正則表達式(如Java)可以使用斷言,這意味着從最後匹配位置的末尾開始。

你的問題不能用一個正則表達式解決,但它可以用
兩個正則表達式完成。

真的很簡單。

兩者都用於替換所有情況。

第一個清除任何你不想要的東西。
使用你的例子。

查找:"[^\\d.]+"
替換:""

二是:
查找:"(?:(?!\\A)\\G|(\\.))([^.]*)\\."
替換:"$1$2"

最後的正則表達式刪除所有點的第一個(但後第一個)
這是這個正則表達式的細分:

(?: 
     (?! \A)    # Not at BOS 
     \G     # Start at end of last match position 
    |      # or, 
     (\.)    # (1), One time, The first Dot in the string 
) 
([^.]*)   # (2), Optional any chars 
\.     # Until we find the next extra Dot to remove 

輸入:

a12.334tyz.78x 

輸出:

12.33478 
相關問題