Mercurial > public > html2wiki
view src/org/nwoca/ssdt/tools/html2wiki/ReplaceTransformer.java @ 11:8f23347884c0
Deal with double dashes surrounded by words. ReplaceTransformer can now replace specific group.
author | smith@nwoca.org |
---|---|
date | Fri, 28 Jan 2011 13:57:25 -0500 |
parents | 22ed6d93442c |
children |
line wrap: on
line source
package org.nwoca.ssdt.tools.html2wiki; import java.util.regex.*; class ReplaceTransformer implements Transformer { private Pattern replace; private String replacement; private int replaceGroup; /** * ReplaceTransform to replace the entire regex. * * @param regex * @param replacement */ public ReplaceTransformer(String regex, String replacement) { this(regex,replacement,0); } /** * ReplaceTransform to replace a specific group in the Regex. * * @param regex * @param replacement * @param replaceGroup group to replace */ public ReplaceTransformer(String regex, String replacement, int replaceGroup) { replace = Pattern.compile(regex); this.replacement = replacement; this.replaceGroup = replaceGroup; } public void apply(StringBuffer buffer) { Matcher matcher = replace.matcher(buffer); int start = 0; while (matcher.find(start)) { if (replaceGroup == 0) { buffer.replace(matcher.start(),matcher.end(),replacement); start = matcher.start() + replacement.length(); } else { String t = ""; for (int i = 1; i < matcher.groupCount() + 1 ; i++) { if (i != replaceGroup) { t += matcher.group(i); } else { t += replacement; } } buffer.replace(matcher.start(),matcher.end(),t); start = matcher.start() + t.length(); } } } public String toString() { return "Replace: " + replace.pattern() + " with " +replacement; } }