37

我有一个字符串:

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
4

13 回答 13

67

您可以简单地使用substring

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

确保在执行后重新分配您的字段,substring因为字符串在 java 中是不可变的

于 2013-03-07T10:21:38.393 回答
14

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

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

如果要删除尾随逗号,只需去掉+ " ".

于 2013-03-07T10:20:47.360 回答
12

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

fieldName = fieldName.trim();
fieldName = fieldName.substring(0,fieldName.length() - 1);
于 2013-03-07T10:20:52.993 回答
11
fieldName = fieldName.substring(0, string.length()-1) + " ";
于 2013-03-07T10:20:04.940 回答
8

首先字符串在java中是不可变的,你必须将替换的结果分配给一个变量。

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

您也可以使用 regex 作为选项,使用String#replaceAll(regex, str);

fieldName = fieldName.replaceAll(",$","");
于 2013-03-07T10:20:51.577 回答
6

尝试这个:

s = s.replaceAll("[,]$", "");
于 2015-04-21T08:27:39.127 回答
3
    if (fieldName.endsWith(",")) {
        fieldName = fieldName.substring(0, fieldName.length()-1) + " ";
    }
于 2019-01-09T16:18:40.330 回答
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"));
    }
于 2019-10-24T14:58:14.813 回答
2

StringBuilder replace 方法可用于替换最后一个字符。

StringBuilder.replace(startPosition, endPosition, newString)

StringBuilder builder = new StringBuilder(fieldName);
builder.replace(builder.length()-1, builder.length(), "");
builder.toString();
于 2017-06-19T03:39:10.670 回答
1

您可以使用正则表达式来识别最后一个逗号 (,) 并将其替换为“”,如下所示:

if(fieldName.endsWith(","))
{                           
fieldName = fieldName.replace(/,([^,]*)$/," ");
}
于 2014-07-02T18:57:56.847 回答
1

您可以简单地使用:

if(fieldName.endsWith(","))
{
   StringUtils.chop(fieldName);
}

来自 commons-lang

于 2018-05-17T06:38:56.137 回答
0

@Abubakkar Rangara 已经回答了解决问题的简单方法

替代方案是:

String[] result = null;
if(fieldName.endsWith(",")) {                           
String[] result = fieldName.split(",");
    for(int i = 1; i < result.length - 1; i++) {
        result[0] = result[0].concat(result[i]);
    }
}
于 2015-04-21T09:18:27.980 回答
-5

修改代码为 fieldName = fieldName.replace("," , " ");

于 2013-03-07T10:27:55.207 回答