Java字符串删除所有非数字字符和单词,如var123

标签 java string character

我有一个字符串:

String s = "12 text var2 14 8v 1";

我只需要从此字符串中获取数字,例如:

12 14 1.

但我不需要这样的词:

var2 and 8v.c  

我尝试过这个:

str = str.replaceAll("[^\\d.]", "");`

最佳答案

如果您确实想使用 String.replaceAll 来实现此目的,有一个解决方法:

//            | one or more non-digits
//            |   | followed by one or more digits
//            |   |   | followed by one or more non-digits
//            |   |   |    | or the end of the input      
//            |   |   |    |     | replace with single white space
s.replaceAll("\\D+\\d+(\\D+|$)", " ");

输出

12 14 1

但是,这个解决方案很丑陋,并且可能会因不同的输入而崩溃。

我建议您解析正数,并通过迭代输入来收集。

大致如下:

//                           | word boundary
//                           |  | one or more digits
//                           |  |    | word boundary
Pattern p = Pattern.compile("\\b\\d+\\b");

关于Java字符串删除所有非数字字符和单词,如var123,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25501753/

相关文章:

java - Gradle:正则表达式查找并替换特定文本周围的空格

string - 找到模式并将其移至行尾

java - java中如何替换特殊字符

text - 文本编辑器如何存储 1 个字节以上的数据?

java - 自动装箱字符值然后返回空白值

java - 我在哪里可以找到 JOSSO 数据库配置文件?

java - 使用用户名和密码访问 Azure Active Directory

java - 如何将 web 服务的 xml 响应转换为所需的 xml 格式?

java - 媒体播放器不会在按钮单击方法中播放声音

C# 字符串排列