替换除 positive/negative 数字以外的所有内容
Replace everything except positive/negative numbers
已经回答了许多关于替换所有正数的问题。但是,我找不到任何同时保留正数和负数的答案。我想替换所有不是数字的东西(正数或负数)。输出应如下所示。
0 | success. id - 1234|
-> 0 1234
和
-10 | failure. id - 2345|
-> -10 2345
显然 this 回答了积极的部分。
您可以使用此正则表达式匹配 positive/negative 个整数:
[+-]?\b\d+\b
匹配 positive/negative 个数字,包括小数:
[+-]?\b\d+(?:\.\d+)?\b
请注意,与其使用 replace,不如在 Pattern
和 Matcher
API 中使用上述正则表达式,并只获取匹配的数据。
如果你只能使用替换,那么使用:
str = str.replaceAll( "([+-]?\b\d+\b)|\S+[ \t]*", "" );
我在 Kotlin 中使用它来替换所有非双精度字符,然后再解析为双精度字符:
val double = str.replace("[^0-9.-]".toRegex(), "").toDoubleOrNull()
已经回答了许多关于替换所有正数的问题。但是,我找不到任何同时保留正数和负数的答案。我想替换所有不是数字的东西(正数或负数)。输出应如下所示。
0 | success. id - 1234|
-> 0 1234
和
-10 | failure. id - 2345|
-> -10 2345
显然 this 回答了积极的部分。
您可以使用此正则表达式匹配 positive/negative 个整数:
[+-]?\b\d+\b
匹配 positive/negative 个数字,包括小数:
[+-]?\b\d+(?:\.\d+)?\b
请注意,与其使用 replace,不如在 Pattern
和 Matcher
API 中使用上述正则表达式,并只获取匹配的数据。
如果你只能使用替换,那么使用:
str = str.replaceAll( "([+-]?\b\d+\b)|\S+[ \t]*", "" );
我在 Kotlin 中使用它来替换所有非双精度字符,然后再解析为双精度字符:
val double = str.replace("[^0-9.-]".toRegex(), "").toDoubleOrNull()