如何删除字符串中除“1”和“2”之外的所有数字?

我想删除除String号码之外的所有号码1,并且2该号码是独立的。然后我想1用one和2替换two。


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


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";

因此,1和2in2019被删除,但独立的1和被替换为和。2onetwo


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


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.


我不知道如何单独改变这个1和那个。2有什么建议吗?


繁星淼淼
浏览 103回答 3
3回答

皈依舞

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此外,在替换时使用字边界1并2避免将这些数字作为其他数字的一部分进行匹配也很重要。

潇潇雨雨

您可以对正则表达式模式在andString#replaceAll两侧查找数字的位置进行两次调用:12public String cleanNumber(String myString) {     return myString.replaceAll("(?<!\\d)1(?!\\d)", "one")                    .replaceAll("(?<!\\d)2(?!\\d)", "two"); }输出:Happy New Year 2019, it's one January now,two January tommorow

慕运维8079593

首先替换一位数的 1 和 2,然后删除所有其他数字public String cleanNumber( String s ){  s = s.replaceAll( "(\\D)1(\\D)", "$1one$2" ).replaceAll( "(\\D)2(\\D)", "$1two$2" );  return( deleteChars.apply( s, "0123456789" ) );}String myString = "Happy New Year 2019, it's 1 January now,2 January tommorow";cleanNumber( myString );  // Happy New Year , it's one January now,two January tommorow
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java