为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星淼淼 2023-09-20 16:04:11
我想删除除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有什么建议吗?
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超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避免将这些数字作为其他数字的一部分进行匹配也很重要。


查看完整回答
反对 回复 2023-09-20
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以对正则表达式模式在andString#replaceAll两侧查找数字的位置进行两次调用:12

public 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
查看完整回答
反对 回复 2023-09-20
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

首先替换一位数的 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

查看完整回答
反对 回复 2023-09-20
  • 3 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信