簡體   English   中英

正則表達式在方法 replaceAll() 中不起作用 - Android

[英]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("(?<!^)-","");

查看IDEONE 演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM