我有一个字符串文字,其中包含一系列 [a-z]
字符,后跟一个数字 字符。我想创建一个新的字符串文字,其内容与旧字符串相同,除了最后一个数字字符。我怎样才能在Java中以最优化的方式做到这一点?
例如:
String str = "sometext2";
String newString = "sometext5"; //The digit part is dynamic and I have that value already computed
return newString
最佳答案
你可以尝试这个正则表达式
\d*$ // 0 or more digits at the end of the string
示例:
@Test
public void replaceTrailingDigits() {
String str = "sometext2".replaceFirst("\\d*$", Integer.toString(5));
Assert.assertEquals("sometext5", str);
str = "sometext226782".replaceFirst("\\d*$", Integer.toString(897623));
Assert.assertEquals("sometext897623", str);
str = "sometext".replaceFirst("\\d*$", Integer.toString(4));
Assert.assertEquals("sometext4", str);
}
正如您在第三个测试中看到的,如果原始 str 没有任何尾随数字,则正则表达式允许附加新数字。如果你想防止这种情况,那么你可以将多重性更改为 one or more
,即 \d+$
关于java - 返回与原始字符串几乎相同的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18957299/