gpt4 book ai didi

java - 将字符串中的最后一个点替换为美元符号

转载 作者:行者123 更新时间:2023-12-01 23:29:59 36 4
gpt4 key购买 nike

我想用美元符号替换以下字符串中的最后一个点,我该怎么做?

de.java_chess.javaChess.game.GameImpl.GameStatus

我想要使用de.java_chess.javaChess.game.GameImpl$GameStatus

我使用以下代码行来执行此操作:

invokedMeth = invokedMeth.replaceAll("(.*)\\.(\\d+)$","$1$$2");

但是,这不起作用,我最终得到了与输入相同的原始字符串。我该如何解决这个问题?

最佳答案

对于这个要求,我会使用非正则表达式的解决方案,它更容易理解并且更高效。

StringBuilder invokedMethSb = new StringBuilder(invokedMeth);
invokedMethSb.setCharAt(invokedMethSb.lastIndexOf("."), '$');

invokedMeth = invokedMethSb.toString();
/*de.java_chess.javaChess.game.GameImpl$GameStatus*/

StringBuilder对于这些操作有一些很好的实用程序,例如 setCharAt .


作为个人意见,我更喜欢以下一个:

char[] invokedArray = invokedMeth.toCharArray();
invokedArray[invokedMeth.lastIndexOf(".")]='$';

invokedMeth = new String(invokedArray);
/*de.java_chess.javaChess.game.GameImpl$GameStatus*/

正则表达式解决方案:

您可以使用Positive Lookahead , (?=([^.]*)$) 其中 ([^.]*) 匹配任意数量的非点(即 [^. ]) 字符和 $ 断言行尾的位置。您可以查看regex101.com以获得更多解释。

public class Main {
public static void main(String[] args) {
String str = "de.java_chess.javaChess.game.GameImpl.GameStatus";
str = str.replaceAll("\\.(?=([^.]*)$)", "\\$");
System.out.println(str);
}
}

输出:

de.java_chess.javaChess.game.GameImpl$GameStatus

关于java - 将字符串中的最后一个点替换为美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66439883/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com