java - 如何删除字符串中除 "1"和 "2"之外的所有数字?

标签 java regex string

我想删除 String 中的所有数字除了号码 12那个独立的。然后我想替换 1one2two .

例如,我期望的输入输出如下:

String myString = "Happy New Year 2019, it's 1 January now,2 January tommorow";

预期输出:

myString = "Happy New Year, it's one January now,two January tommorow";

所以,122019被删除,但是 12独立的替换为 onetwo .

我试过使用正则表达式,但所有数字都被删除了。这是我的代码:

public String cleanNumber(String myString){
    String myPatternEnd = "([0-9]+)(\\s|$)";
    String myPatternBegin = "(^|\\s)([0-9]+)";
    myString = myString.replaceAll(myPatternBegin, "");
    myString = myString.replaceAll(myPatternEnd, "");
    return myString;
}

我也尝试用这个正则表达式替换 [1][2]但是2019变成 two0one9 .

我不知道如何更改此 12那个独立的。有什么建议吗?

最佳答案

您可以按以下顺序使用replaceAll:

myString = myString
          .replaceAll("\\b1\\b", "one") // replace 1 by one
          .replaceAll("\\b2\\b", "two") // replace 2 by two
          .replaceAll("\\s*\\d+", "");  // remove all digits

//=> Happy New Year, it's one January now,two January tommorow

此外,在替换 12 时,使用字边界也很重要,以避免将这些数字匹配为其他数字的一部分。

关于java - 如何删除字符串中除 "1"和 "2"之外的所有数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58206730/

相关文章:

string - 按端口号对 IPv4 地址进行排序

jQuery 从字符串中删除 '-' 字符

java - Android SpeechRecognizer 只能在应用程序的主线程中使用

java - 计算两个 Java 日期实例之间的差异

html - 如何从 HTML 文档中删除表格?

c# - 字符串末尾数字的正则表达式?

java - 我们可以将多个参数传递给 RestCypherQueryEngine.query 吗?

java - 尝试运行在线项目时出现 CannotGetJDBCConnectionException

c# - 正则表达式仅限制大写

c# - 如何从字符串中提取所有数字(如 int)? C#