java.lang.Objectcom.aspose.words.ReplacingArgs
public class ReplacingArgs
Example:
public void replaceWithInsertHtml() throws Exception {
// Open the document
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.writeln("Hello <CustomerName>,");
FindReplaceOptions options = new FindReplaceOptions();
options.setReplacingCallback(new ReplaceWithHtmlEvaluator(options));
doc.getRange().replace(Pattern.compile(" <CustomerName>,"), "", options);
// Save the modified document
doc.save(getArtifactsDir() + "Range.ReplaceWithInsertHtml.doc");
}
private class ReplaceWithHtmlEvaluator implements IReplacingCallback {
ReplaceWithHtmlEvaluator(final FindReplaceOptions options) {
mOptions = options;
}
/**
* NOTE: This is a simplistic method that will only work well when the match
* starts at the beginning of a run.
*/
public int replacing(final ReplacingArgs e) throws Exception {
DocumentBuilder builder = new DocumentBuilder((Document) e.getMatchNode().getDocument());
builder.moveTo(e.getMatchNode());
// Replace '<CustomerName>' text with a red bold name
builder.insertHtml("<b><font color='red'>James Bond, </font></b>");
e.setReplacement("");
return ReplaceAction.REPLACE;
}
private FindReplaceOptions mOptions;
}
Property Getters/Setters Summary | ||
---|---|---|
int | getGroupIndex() | |
void | setGroupIndex(int value) | |
Identifies, by index, a captured group in the |
||
java.util.regex.Matcher | getMatch() | |
The |
||
Node | getMatchNode() | |
Gets the node that contains the beginning of the match. | ||
int | getMatchOffset() | |
Gets the zero-based starting position of the match from the start of the node that contains the beginning of the match. | ||
java.lang.String | getReplacement() | |
void | setReplacement(java.lang.String value) | |
Gets or sets the replacement string. |
Property Getters/Setters Detail |
---|
getGroupIndex/setGroupIndex | |
public int getGroupIndex() / public void setGroupIndex(int value) |
Default is zero.
Example:
Shows how to apply a different font to new content via FindReplaceOptions.public void replaceNumbersAsHex() throws Exception { Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.getFont().setName("Arial"); builder.write("There are few numbers that should be converted to HEX and highlighted: 123, 456, 789 and 17379."); FindReplaceOptions options = new FindReplaceOptions(); // Highlight newly inserted content with a color options.getApplyFont().setHighlightColor(new Color(255, 140, 0)); // Apply an IReplacingCallback to make the replacement to convert integers into hex equivalents // and also to count replacements in the order they take place options.setReplacingCallback(new NumberHexer()); // By default, text is searched for replacements front to back, but we can change it to go the other way options.setDirection(FindReplaceDirection.BACKWARD); int count = doc.getRange().replace(Pattern.compile("[0-9]+"), "", options); Assert.assertEquals(count, 4); doc.save(getArtifactsDir() + "Range.ReplaceNumbersAsHex.docx"); } /// <summary> /// Replaces arabic numbers with hexadecimal equivalents and appends the number of each replacement. /// </summary> private static class NumberHexer implements IReplacingCallback { public int replacing(ReplacingArgs args) { mCurrentReplacementNumber++; // Parse numbers String numberStr = args.getMatch().group(); numberStr = numberStr.trim(); // Java throws NumberFormatException both for overflow and bad format int number = Integer.parseInt(numberStr); // And write it as HEX args.setReplacement(MessageFormat.format("0x{0} (replacement #{1})", Integer.toHexString(number), mCurrentReplacementNumber)); System.out.println(MessageFormat.format("Match #{0}", mCurrentReplacementNumber)); System.out.println(MessageFormat.format("\tOriginal value:\t{0}", args.getMatch().group())); System.out.println(MessageFormat.format("\tReplacement:\t{0}", args.getReplacement())); System.out.println(MessageFormat.format("\tOffset in parent {0} node:\t{1}", args.getMatchNode().getNodeType(), args.getMatchOffset())); return ReplaceAction.REPLACE; } private int mCurrentReplacementNumber; }
getMatch | |
public java.util.regex.Matcher getMatch() |
Matcher.start() gets the zero-based starting position of the match from the start of the find and replace range.
Example:
Shows how to apply a different font to new content via FindReplaceOptions.public void replaceNumbersAsHex() throws Exception { Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.getFont().setName("Arial"); builder.write("There are few numbers that should be converted to HEX and highlighted: 123, 456, 789 and 17379."); FindReplaceOptions options = new FindReplaceOptions(); // Highlight newly inserted content with a color options.getApplyFont().setHighlightColor(new Color(255, 140, 0)); // Apply an IReplacingCallback to make the replacement to convert integers into hex equivalents // and also to count replacements in the order they take place options.setReplacingCallback(new NumberHexer()); // By default, text is searched for replacements front to back, but we can change it to go the other way options.setDirection(FindReplaceDirection.BACKWARD); int count = doc.getRange().replace(Pattern.compile("[0-9]+"), "", options); Assert.assertEquals(count, 4); doc.save(getArtifactsDir() + "Range.ReplaceNumbersAsHex.docx"); } /// <summary> /// Replaces arabic numbers with hexadecimal equivalents and appends the number of each replacement. /// </summary> private static class NumberHexer implements IReplacingCallback { public int replacing(ReplacingArgs args) { mCurrentReplacementNumber++; // Parse numbers String numberStr = args.getMatch().group(); numberStr = numberStr.trim(); // Java throws NumberFormatException both for overflow and bad format int number = Integer.parseInt(numberStr); // And write it as HEX args.setReplacement(MessageFormat.format("0x{0} (replacement #{1})", Integer.toHexString(number), mCurrentReplacementNumber)); System.out.println(MessageFormat.format("Match #{0}", mCurrentReplacementNumber)); System.out.println(MessageFormat.format("\tOriginal value:\t{0}", args.getMatch().group())); System.out.println(MessageFormat.format("\tReplacement:\t{0}", args.getReplacement())); System.out.println(MessageFormat.format("\tOffset in parent {0} node:\t{1}", args.getMatchNode().getNodeType(), args.getMatchOffset())); return ReplaceAction.REPLACE; } private int mCurrentReplacementNumber; }
getMatchNode | |
public Node getMatchNode() |
getMatchOffset | |
public int getMatchOffset() |
Example:
Shows how to apply a different font to new content via FindReplaceOptions.public void replaceNumbersAsHex() throws Exception { Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.getFont().setName("Arial"); builder.write("There are few numbers that should be converted to HEX and highlighted: 123, 456, 789 and 17379."); FindReplaceOptions options = new FindReplaceOptions(); // Highlight newly inserted content with a color options.getApplyFont().setHighlightColor(new Color(255, 140, 0)); // Apply an IReplacingCallback to make the replacement to convert integers into hex equivalents // and also to count replacements in the order they take place options.setReplacingCallback(new NumberHexer()); // By default, text is searched for replacements front to back, but we can change it to go the other way options.setDirection(FindReplaceDirection.BACKWARD); int count = doc.getRange().replace(Pattern.compile("[0-9]+"), "", options); Assert.assertEquals(count, 4); doc.save(getArtifactsDir() + "Range.ReplaceNumbersAsHex.docx"); } /// <summary> /// Replaces arabic numbers with hexadecimal equivalents and appends the number of each replacement. /// </summary> private static class NumberHexer implements IReplacingCallback { public int replacing(ReplacingArgs args) { mCurrentReplacementNumber++; // Parse numbers String numberStr = args.getMatch().group(); numberStr = numberStr.trim(); // Java throws NumberFormatException both for overflow and bad format int number = Integer.parseInt(numberStr); // And write it as HEX args.setReplacement(MessageFormat.format("0x{0} (replacement #{1})", Integer.toHexString(number), mCurrentReplacementNumber)); System.out.println(MessageFormat.format("Match #{0}", mCurrentReplacementNumber)); System.out.println(MessageFormat.format("\tOriginal value:\t{0}", args.getMatch().group())); System.out.println(MessageFormat.format("\tReplacement:\t{0}", args.getReplacement())); System.out.println(MessageFormat.format("\tOffset in parent {0} node:\t{1}", args.getMatchNode().getNodeType(), args.getMatchOffset())); return ReplaceAction.REPLACE; } private int mCurrentReplacementNumber; }
getReplacement/setReplacement | |
public java.lang.String getReplacement() / public void setReplacement(java.lang.String value) |
Example:
Replaces text specified with regular expression with HTML.public void replaceWithInsertHtml() throws Exception { // Open the document Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.writeln("Hello <CustomerName>,"); FindReplaceOptions options = new FindReplaceOptions(); options.setReplacingCallback(new ReplaceWithHtmlEvaluator(options)); doc.getRange().replace(Pattern.compile(" <CustomerName>,"), "", options); // Save the modified document doc.save(getArtifactsDir() + "Range.ReplaceWithInsertHtml.doc"); } private class ReplaceWithHtmlEvaluator implements IReplacingCallback { ReplaceWithHtmlEvaluator(final FindReplaceOptions options) { mOptions = options; } /** * NOTE: This is a simplistic method that will only work well when the match * starts at the beginning of a run. */ public int replacing(final ReplacingArgs e) throws Exception { DocumentBuilder builder = new DocumentBuilder((Document) e.getMatchNode().getDocument()); builder.moveTo(e.getMatchNode()); // Replace '<CustomerName>' text with a red bold name builder.insertHtml("<b><font color='red'>James Bond, </font></b>"); e.setReplacement(""); return ReplaceAction.REPLACE; } private FindReplaceOptions mOptions; }