替换除正数/负数外的所有内容

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

请注意,您最好在PatternMatcher API 中使用上述正则表达式,而不是使用替换,然后只获取匹配的数据。


如果您只能使用替换,请使用:

str = str.replaceAll( "([+-]?\\b\\d+\\b)|\\S+[ \\t]*", "$1" );

Replace Demo

【讨论】:

等号有什么用? 0 |成功。编号 - 1234|在您的替换正则表达式中返回 01234 而不是 0 1234 嗯this demo在01234之间显示一个空格,但不建议替换,最好使用匹配。【参考方案2】:

我在 Kotlin 中使用它来替换所有非 Double 字符,然后再解析为 Double:

val double = str.replace("[^0-9.-]".toRegex(), "").toDoubleOrNull()

【讨论】:

以上是关于替换除正数/负数外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

数值的二进制与位运算

ARM汇编求正数负数个数

阅读《C++Primer》的个人记录——2.1基本内置类型-关于浮点数补码

重新排列包含正数和负数的数组

接口请求,上传byte数组byte[]数据异常,负数变正数/负数变63

javascript 负数 怎么取 让正数变成负数