package javacodebook.regex.replace;

import java.util.regex.*;
/**
 * Wandelt alle Vorkommnisse von "Frau Meyer" (bzw. Mayer,
 * Maier, Meier oder Meyer) in "Frau Schultze-Meyer".
 * @author Mark Donnermeyer
 */
public class RegexReplace {
    
    public static void main(String[] args) {

        String content = args[0];
        StringBuffer newContent = new StringBuffer();
        
        Pattern pattern = Pattern.compile("(Frau|Fräulein) (M(ai|ei|ay|ey)er)");
        Matcher matcher = pattern.matcher(content);

        // Namen durch neuen Namen ersetzen
        int start = 0;
        while (matcher.find())
        {
            // Die 2te Gruppe ist der Nachname. Es wird der
            // Text sowie seine Position im String gelesen.
            int matchStart  = matcher.start(2);
            int matchEnd    = matcher.end(2);
            String nachname = matcher.group(2);
            
            // Den Text vor dem gefundenen Namen in den neuen
            // String übernehmen, und dann den Namen selbst.
            newContent.append(content.substring(start, matchStart));
            newContent.append("Schultze-");
            newContent.append(nachname);
            
            // Zum nächsten Match gehen
            start = matchEnd;
        }
        // Das letzte Ende des alten Strings an den neuen String hängen.
        newContent.append(content.substring(start));

        System.out.println(newContent);
    }
}
