Java 替换除最后一个字符以外的所有字符

Java 替换除最后一个字符以外的所有字符,java,Java,假设我有一个a.b.c.d字符串。如何编写将该字符串转换为abc.d的方法?或者有什么方法可以实现吗 到目前为止我都试过了 int dotPlacing = propertyName.lastIndexOf(".");//12 String modString = propertyName.replace(".", ""); modString = modString.substring(0, dotPlacing-1) + "."+modStri

假设我有一个
a.b.c.d
字符串。如何编写将该字符串转换为
abc.d
的方法?或者有什么方法可以实现吗

到目前为止我都试过了

        int dotPlacing = propertyName.lastIndexOf(".");//12
        String modString = propertyName.replace(".", "");
        modString = modString.substring(0, dotPlacing-1) + "."+modString.substring(dotPlacing-1);

我用它来编写Hibernate标准。它适用于
user.country.name
,但不适用于
user.country.name.ss
。尚未尝试任何其他字符串。

您可以将子字符串从0提取到
lastIndexOf('.')
。在此子字符串中,将所有
替换为空字符串。然后与子字符串合并(从
lastIndexOf.
到结束)

比如:

String theString = "a.b.c.d";

String separator = ".";
String replacement = "";
String newString = theString.substring(0, theString.lastIndexOf(separator)).replaceAll(separator , replacement).concat(theString.substring(theString.lastIndexOf(separator)));

Assert.assertEquals("abc.d", newString);
使用StringTokenizer

String in = "a.b.c.d";

StringTokenizer t = new StringTokenizer(in,".");
String last = "",result = "";
while(t.hasMoreTokens())
{
    last = t.nextToken();
    result += " "+last;
}
result = result.trim();
result.replaceAll(last,"."+last);

您正在使用
点放置
不是在原始字符串上,而是在没有任何点的新字符串上,因此其长度发生了变化,这是您出现问题的主要原因

将代码更改为

int dotPlacing = propertyName.lastIndexOf('.');

String modString = propertyName.substring(0, dotPlacing).replace(".","")
        + propertyName.substring(dotPlacing);
System.out.println(modString);

你这样做是为了文件扩展名还是为了更广泛的用途?吸取的教训,我应该发布我在问题中的内容。太好了。我怎么没想到呢!
  String start = "a.b.c.d.wea.s";
  String regex = "\\.(?=.*\\.)";
  String end = start.replaceAll(regex, "");
  System.out.println(end);