[英]How to remove all number in string except “1” and “2”?
我想删除String
中的所有数字,但独立的数字1
和2
除外。 然后我想用one
替换1
,用2
替换two
。
比如我期望的输入和output如下:
String myString = "Happy New Year 2019, it's 1 January now,2 January tommorow";
预期 output:
myString = "Happy New Year, it's one January now,two January tommorow";
所以, 2019
的1
和2
被删除了,但是单独的1
和2
被替换为one
和two
。
我试过使用正则表达式,但所有数字都被删除了。 这是我的代码:
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
。 有什么建议吗?
您可以按以下顺序使用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
时使用字边界也很重要,以避免将这些数字作为其他数字的一部分进行匹配。
您可以对String#replaceAll
进行两次调用,其中正则表达式模式在1
和2
的任一侧查找数字:
public String cleanNumber(String myString) {
return myString.replaceAll("(?<!\\d)1(?!\\d)", "one")
.replaceAll("(?<!\\d)2(?!\\d)", "two");
}
Output:
Happy New Year 2019, it's one January now,two January tommorow
首先替换一位数的 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.