[英]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.