2013-11-06 3 views
0

Допустим, у меня есть строка 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. Хавент пробовал для любых других струн.

+3

Что вы пробовали? – Vallentin

+0

Вы делаете это для расширений файлов или более общего использования? –

+0

Извлеченный урок, должен был опубликовать то, что у меня есть в вопросе. Thx – abiieez

ответ

5

YOu может извлечь форму подстроки 0 до lastIndefOf('.'). В этой подстроке замените все . на пустую строку. После этого слияния с subtring (от lastIndexOf . до конца)

+0

Отлично. Что я не думаю об этом! – abiieez

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

Вы используете dotPlacing не на исходной строке, но на новую строку, которая не имеет каких-либо точек поэтому его длина имеет изменения, что является основной причиной ваших проблем.

Изменить код на

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

String modString = propertyName.substring(0, dotPlacing).replace(".","") 
     + propertyName.substring(dotPlacing); 
System.out.println(modString); 
1
String start = "a.b.c.d.wea.s"; 
    String regex = "\\.(?=.*\\.)"; 
    String end = start.replaceAll(regex, ""); 
    System.out.println(end); 
Смежные вопросы