用Java替换字符串中的最后一个字符

42

我有一个字符串:

String fieldName = "A=2,B=3 and C=3,";

现在我想用空格替换最后一个,

我已经使用了:

if (fieldName.endsWith(",")) {
    fieldName.replace(",", " ");
    fieldName = fieldName.replace((char) (fieldName.length() - 1), 'r');
}

System.out.println("fieldName = " + fieldName);

但是我仍然得到相同的旧字符串。我如何获得这个输出呢?

fieldName = A=2,B=3 and C=3
13个回答

75
你可以简单地使用 substring:
if(fieldName.endsWith(","))
{
  fieldName = fieldName.substring(0,fieldName.length() - 1);
}

在执行substring操作后,请务必重新分配您的字段,因为Java中的字符串是不可变的


注意在 JavaScript 中,length() 是没有括号的 length - dani herrera
@danihp 在C#中是.Length...但我希望一个完全无关的语言有不同的代码http://javascriptisnotjava.io/ - weston
@weston,当然没问题!!让我解释一下。我在搜索有关JavaScript问题时发现并应用了Abubakkar Rangara的解决方案。因此,我写了评论(并且我也投了赞成票),给其他寻找jscript片段答案的用户提供帮助。这个片段可以在Java和JavaScript上运行,只需要稍作修改即可。最后,为了开心一笑,引用一句来自大数据Borat的话:https://twitter.com/bigdataborat/status/356928145041002498 - dani herrera
1
@danihp,这个不错,我已经添加到那个网站了。祝贺你! - weston

17

我想用空格替换最后一个逗号

if (fieldName.endsWith(",")) {
    fieldName = fieldName.substring(0, fieldName.length() - 1) + " ";
}
如果您想要删除末尾逗号,只需去掉+ " "即可。

12

为了获得所需的结果,您可以执行以下操作:

fieldName = fieldName.trim();
fieldName = fieldName.substring(0,fieldName.length() - 1);

它会工作,但如果字符串中有空值,则会运行时错误,最好检查是否存在非空值,然后执行代码!!! - Tarit Ray

11
fieldName = fieldName.substring(0, string.length()-1) + " ";

9

首先,在Java中,字符串是不可变的,您必须将replace的结果赋值给一个变量。

fieldName = fieldName.replace("watever","");

您也可以使用正则表达式作为选项,使用String#replaceAll(regex,str)

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

7

试试这个:

s = s.replaceAll("[,]$", "");

我猜这将替换所有“,”。 - Tarit Ray
2
@TaritRay 不会,因为正则表达式中的美元符号表示字符串的结尾。因此,s = s.replaceAll("[,]", ""); 将删除所有逗号,而panticz.de的示例仅替换字符串末尾的逗号。 - Iain

3
    if (fieldName.endsWith(",")) {
        fieldName = fieldName.substring(0, fieldName.length()-1) + " ";
    }

2

2
您可以简单使用以下方法:
if(fieldName.endsWith(","))
{
   StringUtils.chop(fieldName);
}

来自commons-lang


2

org.apache.commons.lang3.StringUtils.removeEnd()org.springframework.util.StringUtils.trimTrailingCharacter()是您的好帮手:

StringUtils.removeEnd(null, *)      = null
StringUtils.removeEnd("", *)        = ""
StringUtils.removeEnd(*, null)      = *
StringUtils.removeEnd("www.domain.com", ".com.")  = "www.domain.com"
StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
StringUtils.removeEnd("www.domain.com", "domain") = "www.domain.com"
StringUtils.removeEnd("abc", "")    = "abc"
    @Test
    public void springStringUtils() {
        String url = "https://some.site/path/";

        String result = org.springframework.util.StringUtils.trimTrailingCharacter(url, '/');

        assertThat(result, equalTo("https://some.site/path"));
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接