java中的字符串替换方法问题

时间:2016-10-18 04:44:17

标签: java string replace

我的问题是只将字符串中最后一个字符替换为另一个字符。当我使用String.replace(char1,char2)时,它会替换字符串中所有出现的字符。

例如,我有一个像

这样的地址字符串

String str = "Addressline1,Addressline2,City,State,Country,";

我需要更换''在'。'。

的字符串末尾

我替换字符的代码是

str = str.replace(str.charAt(str.lastIndexOf(",")),'.');

更换后,字符串如下:

Addressline1.Addressline2.City.State.Country。

Java SDK中是否存在问题?如果是,如何解决?

2 个答案:

答案 0 :(得分:3)

您应该使用使用正则表达式的String.replaceAll

str = str.replaceAll (",$", ".");

$表示字符串的结尾

答案 1 :(得分:-1)

Java replace function的方法声明为:

public String replace(char oldChar, char newChar)

根据文档replace将:

  

返回一个新字符串,该字符串是使用oldChar替换此字符串中所有出现的newChar而生成的。

所以你的代码:

str.charAt(str.lastIndexOf(","))

将清楚地返回角色,。然后,replace会将oldChar ,的所有实例替换为newChar .。这解释了您所看到的行为。

@ScaryWombat击败我的解决方案是你最好的选择:

str = str.replaceAll(",$", ".");

因为,在正则表达式术语中,$表示字符串的结尾。

希望这有帮助!