All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jsoftware.utils.text.RegexReplacer Maven / Gradle / Ivy

The newest version!
package org.jsoftware.utils.text;

import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Replace regexp pattern using callback function.
 * @author m-szalik
 */
public class RegexReplacer {
    private final Pattern pattern;

    /**
     * @param pattern pattern to be used for text searching
     */
    public RegexReplacer(Pattern pattern) {
        this.pattern = pattern;
    }

    /**
     * Replace all regex groups
     * @param text search in string
     * @param replaceFunction replace function (in - text found, out - replacement)
     * @return replacement result
     */
    public String replaceGroupsAll(CharSequence text, Function replaceFunction) {
        Matcher matcher = pattern.matcher(text);
        StringBuilder out = new StringBuilder();
        int start = 0;
        while(matcher.find(start)) {
            int p0 = matcher.start();
            out.append(text.subSequence(start, p0));
            out.append(replaceFunction.apply(matcher.group()));
            start = matcher.end();
        }
        out.append(text.subSequence(start, text.length()));
        return out.toString();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy