Ich gehe durch die Java CodingBat-Übungen. Here der ist ich gerade abgeschlossen hat:Regex zum Ersetzen bestimmter Zeichen vor und nach bestimmten Teilzeichenfolgen
einen String und eine nicht leere Wortkette gegeben, zurückgeben eine Zeichenfolge jeden Zeichen gemacht kurz vor und kurz nach jedem Auftreten des Wortes in der Zeichenkette. Ignoriere Fälle, in denen vor oder nach dem Wort kein Zeichen vorhanden ist, und ein Zeichen kann zweimal enthalten sein, wenn es zwischen zwei Wörtern liegt.
Mein Code, das funktioniert:
public String wordEnds(String str, String word){
String s = "";
String n = " " + str + " "; //To avoid OOB exceptions
int sL = str.length();
int wL = word.length();
int nL = n.length();
int i = 1;
while (i < nL - 1) {
if (n.substring(i, i + wL).equals(word)) {
s += n.charAt(i - 1);
s += n.charAt(i + wL);
i += wL;
} else {
i++;
}
}
s = s.replaceAll("\\s", "");
return s;
}
Meine Frage ist, über reguläre Ausdrücke. Ich möchte wissen, ob das oben genannte mit einer Regex-Anweisung machbar ist, und wenn ja, wie?
Dieses Problem kann mit regulären Java-Ausdrücken schwierig zu lösen sein, da sich die Übereinstimmungen überlappen können, z. 'abcXY1XYijk' passt auf' XY' würde 'cXY1' und' 1XYi' als Gruppen haben. –
Große Frage, übrigens^^ –
fügen Sie einige Eingabe und erwartete Ausgabe – vks