java - 返回与原始字符串几乎相同的子字符串

标签 java regex string

我有一个字符串文字,其中包含一系列 [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/

相关文章:

c# - 如何创建多个列表作为数组?

java - 在 Spark 的 Java API 中,如何使用正则表达式从 Dataset<Row> 中选择列?

java - JavaCC 中 JAVA_UNICODE_ESCAPE 的用途是什么?

java - 如何从 main 方法启动 Vertx 3 Verticle?

Java-Chat-App::分析用户输入

c - 打印 printf 中正数的前导 '+'

java - 如何使用 Hibernate 和 mysql 对包含逗号分隔值的列使用 where 条件

javascript - 正则表达式与 while 循环

字母数字、逗号、连字符、句点的正则表达式 - 地址验证

ruby-on-rails - 如何允许正则表达式为空?