假设我有一串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 :(得分:6)
你可以将子串从0提取到lastIndefOf('.')
。在此子字符串中,将所有.
替换为空字符串。之后与子串合并(从lastIndexOf .
到结束)
答案 1 :(得分:3)
String start = "a.b.c.d.wea.s";
String regex = "\\.(?=.*\\.)";
String end = start.replaceAll(regex, "");
System.out.println(end);
答案 2 :(得分:2)
您使用的dotPlacing
不是原始字符串,而是使用没有任何点的新字符串,因此其长度发生了变化,这是您遇到问题的主要原因。
将您的代码更改为
int dotPlacing = propertyName.lastIndexOf('.');
String modString = propertyName.substring(0, dotPlacing).replace(".","")
+ propertyName.substring(dotPlacing);
System.out.println(modString);
答案 3 :(得分:1)
使用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);