[英]Regex not working in method replaceAll() - Android
我在這里問了一個問題:正則表達式:區分邊界匹配 ^ 和否定關於要在方法 replaceAll() 中應用的正則表達式,以獲得只有數字和減號 (-) 的字符串以允許負數。 我運行以下命令,它在我的 Java 解釋器中運行良好:
String onlyDigits = currencyStringValue.replaceAll("[\\D-]","").replaceAll("(?<!^)-","");
如果我輸入:--25#54d51 -> 返回:-255451
25#54-d51 -> 返回:255151
-25#54d51 -> 返回:-255451
dz-255451 -> 返回:-255451
但是我在 Android Studio 中嘗試了同樣的事情,並且只返回數字,調試應用程序,我注意到 onlyDigits 只獲取數字 0-9,忽略開頭的減號 (-)...
出了什么問題,如果代碼或解決方案有問題,我該如何解決?
謝謝!
問題在於\\D
匹配除 digit 之外的任何字符。 通過第一次替換操作,您將所有減號與其他非數字一起刪除。
解決方案很簡單:將\\D
轉換為否定字符類[^\\d]
並在其中添加一個連字符,以避免在下一次replaceAll 調用之前刪除減號。
用
String onlyDigits = currencyStringValue.replaceAll("[^-\\d]","").replaceAll("(?<!^)-","");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.