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);