替换除正数/负数外的所有内容
Posted
技术标签:
【中文标题】替换除正数/负数外的所有内容【英文标题】:Replace everything except positive/negative numbers 【发布时间】:2015-12-02 00:27:01 【问题描述】:已经回答了很多关于替换所有正数的问题。但是,我找不到任何同时保留正数和负数的答案。我想替换所有不是数字(正数或负数)的东西。输出应如下所示。
0 | success. id - 1234|
-> 0 1234
和
-10 | failure. id - 2345|
-> -10 2345
显然this 的答案是肯定的。
【问题讨论】:
【参考方案1】:您可以使用此正则表达式来匹配正/负整数:
[+-]?\b\d+\b
RegEx Demo
匹配正数/负数,包括小数:
[+-]?\b\d+(?:\.\d+)?\b
请注意,您最好在Pattern
和Matcher
API 中使用上述正则表达式,而不是使用替换,然后只获取匹配的数据。
如果您只能使用替换,请使用:
str = str.replaceAll( "([+-]?\\b\\d+\\b)|\\S+[ \\t]*", "$1" );
Replace Demo
【讨论】:
等号有什么用? 0 |成功。编号 - 1234|在您的替换正则表达式中返回 01234 而不是 0 1234 嗯this demo在0
和1234
之间显示一个空格,但不建议替换,最好使用匹配。【参考方案2】:
我在 Kotlin 中使用它来替换所有非 Double 字符,然后再解析为 Double:
val double = str.replace("[^0-9.-]".toRegex(), "").toDoubleOrNull()
【讨论】:
以上是关于替换除正数/负数外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章
阅读《C++Primer》的个人记录——2.1基本内置类型-关于浮点数补码