Ich habe diese Art von InputJava ersetzen Zeichen mit Groß um (vor und nach) spezifischem Charakter
word w'ord wo'rd
Ich brauche bei den Starts des Wortes beiden Zeichen in Großbuchstaben zu konvertieren und direkt nach dem '
Zeichen (was kann mehrfach vorkommen).
Der Ausgang I benötigen (das vorherige Beispiel verwendet wird) ist
word W'Ord Wo'Rd
ich versuchte, mit einem einfachen Muster
s.replaceAll("(\\w)(\\w*)'(\\w)", "$1");
aber ich bin nicht in der Lage die Gruppe 1 und 3 in Großbuchstaben umzuwandeln
EDIT: Nachdem ich einen kleinen Fehler in der Hauptfrage entdeckt habe, ich @Wiktor Stribizew Code bearbeitet, um den Fall, den ich verpasst habe, einzubeziehen.
Matcher m = Pattern.compile("(\\w)(\\w*)'(\\w)").matcher(s);
StringBuffer result = new StringBuffer();
while (m.find()) {
m.appendReplacement(result, m.group(1).toUpperCase() + m.group(2) + "'" + m.group(3).toUpperCase());
}
m.appendTail(result);
s = result.toString();
Diese in der Tat funktioniert. Wenn ich diesen Code ausführte und die Ausgabe in allen Zeilen sah, die ich konvertieren musste, entdeckte ich einen kleinen Fehler in der Hauptfrage. Ich habe jetzt die Hauptfrage angepasst, um den Fall zu berücksichtigen, den ich verpasst habe. –
Fehler für String: \t String s = "wo'rd w'ord wo'r'd"; – Optional
@DevilingMaster: Der gleiche Ansatz ist hier gültig: erfassen Sie, was Sie brauchen, in Gruppen, und bearbeiten Sie dann jede Gruppe innerhalb des 'while' Blocks. –