Хотя вы можете использовать регулярные выражения, иногда лучше отступить назад и просто сделать это старомодным способом. Я всегда верил, что если вы не можете придумать регулярное выражение, чтобы сделать это примерно через две минуты, это, вероятно, не подходит для решения регулярных выражений.
Без сомнения, получите замечательные ответы на регулярные выражения здесь. Некоторые из них могут даже быть читаемыми: -)
Вы можете использовать lastIndexOf
, чтобы получить последнее вхождение, и substring
, чтобы построить новую строку: Эта полная программа показывает, как:
public class testprog {
public static String morph (String s) {
int pos = s.lastIndexOf(".");
if (pos >= 0)
return s.substring(0,pos) + "!" + s.substring(pos+1);
return s;
}
public static void main(String args[]) {
System.out.println (morph("hello.world.how.are.you!"));
System.out.println (morph("no dots in here"));
System.out.println (morph(". first"));
System.out.println (morph("last ."));
}
}
Вывод:
hello.world.how.are!you!
no dots in here
! first
last !