2014-02-23 82 views
0

目前我使用的過濾器(用於格式化貨幣),但是,用戶仍然能夠進入前導零:防止前導零,除非後面跟着一個點?

00000334.43 // Is accepted but shouldn't be.. 
03000334.43 // I don't want a leading zero unless followed by a . 

我想只接受一家領先的零,如果它是一個.前的零。

據我瞭解,有一個空白editText,這將是不可能的,所以我想刪除的零,除非在.用戶類型之後,在使用的情況下,例如:

User types 0 // 0 - Ok 
User types . // 0. - This is fine 

0 // 0 - Ok 
4 // 04 - Not ok, 0 should be removed from the text edit. 

我它擴展了DigitsKeyListener類的自定義類中這樣做 - 使用後者的filter()方法:

public CharSequence filter(CharSequence source, int start, int end, Spanned dest, 
           int dstart, int dend) 
{ 
    // How can I achieve this inside the filter method? 
} 

我試過到目前爲止:

replaceFirst() - 我試圖使用這個正則表達式 - .replaceFirst("^0+(?!$)", "")但是它在嘗試在打字後在開始處插入數字時會導致問題。我也不確定如何在濾鏡方法中正確使用它。

任何幫助表示讚賞。

+1

你正在按鍵進行這種分析?如果到目前爲止只輸入了零,你不能只是推遲這個處理,直到輸入一個非零或十進制數? – aliteralmind

+1

@aliteralmind確實,因爲我需要檢查旁邊的數字是否是小數點,我想不出更好的方法?這是因爲我的過濾的其餘部分也是在逐個鍵的基礎上完成的 – user2381114

回答

0

看起來像這樣的正則表達式的.replaceFirst應該工作: ^0+(?=\d)

試試吧,看看有沒有什麼幫助。

+0

謝謝你,但你知道我可以在InputFilter的filter()方法中使用它嗎?我正在考慮使用charAt(i + 1)來檢查零是否在旁邊。但我不確定 – user2381114

+0

'InputFilter' - 是你自己的班級嗎?你能形容嗎? –

+0

Here - http://developer.android.com/reference/android/text/InputFilter.html – user2381114