繁体   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