public class StringSubstitutor extends Object
This class takes a piece of text and substitutes all the variables within it. The default definition of a variable is
${variableName}
. The prefix and suffix can be changed via constructors and set methods.
Variable values are typically resolved from a map, but could also be resolved from system properties, or by supplying a custom variable resolver.
The simplest example is to use this class to replace Java System properties. For example:
StringSubstitutor .replaceSystemProperties("You are running with java.version = ${java.version} and os.name = ${os.name}.");
Typical usage of this class follows the following pattern:
replace()
method with in the source text for interpolation.For example:
// Build map Map<String, String> valuesMap = new HashMap<>(); valuesMap.put("animal", "quick brown fox"); valuesMap.put("target", "lazy dog"); String templateString = "The ${animal} jumped over the ${target}."; // Build StringSubstitutor StringSubstitutor sub = new StringSubstitutor(valuesMap); // Replace String resolvedString = sub.replace(templateString);
yielding:
"The quick brown fox jumped over the lazy dog."
You can set a default value for unresolved variables. The default value for a variable can be appended to the variable name after the variable default value delimiter. The default value of the variable default value delimiter is ":-", as in bash and other *nix shells.
You can set the variable value delimiter with setValueDelimiterMatcher(StringMatcher)
,
setValueDelimiter(char)
or setValueDelimiter(String)
.
For example:
// Build map Map<String, String> valuesMap = new HashMap<>(); valuesMap.put("animal", "quick brown fox"); valuesMap.put("target", "lazy dog"); String templateString = "The ${animal} jumped over the ${target} ${undefined.number:-1234567890} times."; // Build StringSubstitutor StringSubstitutor sub = new StringSubstitutor(valuesMap); // Replace String resolvedString = sub.replace(templateString);
yielding:
"The quick brown fox jumped over the lazy dog 1234567890 times."
StringSubstitutor
supports throwing exceptions for unresolved variables, you enable this by setting calling
setEnableUndefinedVariableException(boolean)
with true
.
Static shortcut methods cover the most common use cases. If multiple replace operations are to be performed, creating and reusing an instance of this class will be more efficient.
The default interpolator lets you use string lookups like:
final StringSubstitutor interpolator = StringSubstitutor.createInterpolator(); final String text = interpolator.replace( "Base64 Decoder: ${base64Decoder:SGVsbG9Xb3JsZCE=}\n" + "Base64 Encoder: ${base64Encoder:HelloWorld!}\n" + "Java Constant: ${const:java.awt.event.KeyEvent.VK_ESCAPE}\n" + "Date: ${date:yyyy-MM-dd}\n" + "Environment Variable: ${env:USERNAME}\n" + "File Content: ${file:UTF-8:src/test/resources/document.properties}\n" + "Java: ${java:version}\n" + "Localhost: ${localhost:canonical-name}\n" + "Properties File: ${properties:src/test/resources/document.properties::mykey}\n" + "Resource Bundle: ${resourceBundle:org.apache.commons.text.example.testResourceBundleLookup:mykey}\n" + "System Property: ${sys:user.dir}\n" + "URL Decoder: ${urlDecoder:Hello%20World%21}\n" + "URL Encoder: ${urlEncoder:Hello World!}\n" + "XML XPath: ${xml:src/test/resources/document.xml:/root/path/to/node}\n");
For documentation and a full list of available lookups, see StringLookupFactory
.
NOTE: The list of lookups available by default in createInterpolator()
changed
in version 1.10.0
. See the StringLookupFactory
documentation for details and an explanation
on how to reproduce the previous functionality.
Variable replacement can work recursively by calling setEnableSubstitutionInVariables(boolean)
with
true
. If a variable value contains a variable then that variable will also be replaced. Cyclic replacements
are detected and will throw an exception.
You can get the replace result to contain a variable prefix. For example:
"The variable ${${name}} must be used."
If the value of the "name" variable is "x", then only the variable "name" is replaced resulting in:
"The variable ${x} must be used."
To achieve this effect there are two possibilities: Either set a different prefix and suffix for variables which do not conflict with the result text you want to produce. The other possibility is to use the escape character, by default '$'. If this character is placed before a variable reference, this reference is ignored and won't be replaced. For example:
"The variable $${${name}} must be used."
In some complex scenarios you might even want to perform substitution in the names of variables, for instance
${jre-${java.specification.version}}
StringSubstitutor
supports this recursive substitution in variable names, but it has to be enabled explicitly
by calling setEnableSubstitutionInVariables(boolean)
with true
.
This class is not thread safe.
Modifier and Type | Field and Description |
---|---|
static char |
DEFAULT_ESCAPE
Constant for the default escape character.
|
static StringMatcher |
DEFAULT_PREFIX
Constant for the default variable prefix.
|
static StringMatcher |
DEFAULT_SUFFIX
Constant for the default variable suffix.
|
static StringMatcher |
DEFAULT_VALUE_DELIMITER
Constant for the default value delimiter of a variable.
|
static String |
DEFAULT_VAR_DEFAULT
The default variable default separator.
|
static String |
DEFAULT_VAR_END
The default variable end separator.
|
static String |
DEFAULT_VAR_START
The default variable start separator.
|
Constructor and Description |
---|
StringSubstitutor()
Creates a new instance with defaults for variable prefix and suffix and the escaping character.
|
StringSubstitutor(Map<String,V> valueMap)
Creates a new instance and initializes it.
|
StringSubstitutor(Map<String,V> valueMap,
String prefix,
String suffix)
Creates a new instance and initializes it.
|
StringSubstitutor(Map<String,V> valueMap,
String prefix,
String suffix,
char escape)
Creates a new instance and initializes it.
|
StringSubstitutor(Map<String,V> valueMap,
String prefix,
String suffix,
char escape,
String valueDelimiter)
Creates a new instance and initializes it.
|
StringSubstitutor(StringLookup variableResolver)
Creates a new instance and initializes it.
|
StringSubstitutor(StringLookup variableResolver,
StringMatcher prefixMatcher,
StringMatcher suffixMatcher,
char escape)
Creates a new instance and initializes it.
|
StringSubstitutor(StringLookup variableResolver,
StringMatcher prefixMatcher,
StringMatcher suffixMatcher,
char escape,
StringMatcher valueDelimiterMatcher)
Creates a new instance and initializes it.
|
StringSubstitutor(StringLookup variableResolver,
String prefix,
String suffix,
char escape)
Creates a new instance and initializes it.
|
StringSubstitutor(StringLookup variableResolver,
String prefix,
String suffix,
char escape,
String valueDelimiter)
Creates a new instance and initializes it.
|
StringSubstitutor(StringSubstitutor other)
Creates a new instance based on the given StringSubstitutor.
|
Modifier and Type | Method and Description |
---|---|
static StringSubstitutor |
createInterpolator()
Creates a new instance using the interpolator string lookup
StringLookupFactory.interpolatorStringLookup() . |
char |
getEscapeChar()
Returns the escape character.
|
StringLookup |
getStringLookup()
Gets the StringLookup that is used to lookup variables.
|
StringMatcher |
getValueDelimiterMatcher()
Gets the variable default value delimiter matcher currently in use.
|
StringMatcher |
getVariablePrefixMatcher()
Gets the variable prefix matcher currently in use.
|
StringMatcher |
getVariableSuffixMatcher()
Gets the variable suffix matcher currently in use.
|
boolean |
isDisableSubstitutionInValues()
Returns a flag whether substitution is disabled in variable values.If set to true, the values of variables
can contain other variables will not be processed and substituted original variable is evaluated, e.g.
|
boolean |
isEnableSubstitutionInVariables()
Returns a flag whether substitution is done in variable names.
|
boolean |
isEnableUndefinedVariableException()
Returns a flag whether exception can be thrown upon undefined variable.
|
boolean |
isPreserveEscapes()
Returns the flag controlling whether escapes are preserved during substitution.
|
String |
replace(char[] source)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
array as a template.
|
String |
replace(char[] source,
int offset,
int length)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
array as a template.
|
String |
replace(CharSequence source)
Replaces all the occurrences of variables with their matching values from the resolver using the given source as
a template.
|
String |
replace(CharSequence source,
int offset,
int length)
Replaces all the occurrences of variables with their matching values from the resolver using the given source as
a template.
|
String |
replace(Object source)
Replaces all the occurrences of variables in the given source object with their matching values from the
resolver.
|
static <V> String |
replace(Object source,
Map<String,V> valueMap)
Replaces all the occurrences of variables in the given source object with their matching values from the map.
|
static <V> String |
replace(Object source,
Map<String,V> valueMap,
String prefix,
String suffix)
Replaces all the occurrences of variables in the given source object with their matching values from the map.
|
static String |
replace(Object source,
Properties valueProperties)
Replaces all the occurrences of variables in the given source object with their matching values from the
properties.
|
String |
replace(String source)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
string as a template.
|
String |
replace(StringBuffer source)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
buffer as a template.
|
String |
replace(StringBuffer source,
int offset,
int length)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
buffer as a template.
|
String |
replace(String source,
int offset,
int length)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
string as a template.
|
String |
replace(TextStringBuilder source)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
builder as a template.
|
String |
replace(TextStringBuilder source,
int offset,
int length)
Replaces all the occurrences of variables with their matching values from the resolver using the given source
builder as a template.
|
boolean |
replaceIn(StringBuffer source)
Replaces all the occurrences of variables within the given source buffer with their matching values from the
resolver.
|
boolean |
replaceIn(StringBuffer source,
int offset,
int length)
Replaces all the occurrences of variables within the given source buffer with their matching values from the
resolver.
|
boolean |
replaceIn(StringBuilder source)
Replaces all the occurrences of variables within the given source buffer with their matching values from the
resolver.
|
boolean |
replaceIn(StringBuilder source,
int offset,
int length)
Replaces all the occurrences of variables within the given source builder with their matching values from the
resolver.
|
boolean |
replaceIn(TextStringBuilder source)
Replaces all the occurrences of variables within the given source builder with their matching values from the
resolver.
|
boolean |
replaceIn(TextStringBuilder source,
int offset,
int length)
Replaces all the occurrences of variables within the given source builder with their matching values from the
resolver.
|
static String |
replaceSystemProperties(Object source)
Replaces all the occurrences of variables in the given source object with their matching values from the system
properties.
|
protected String |
resolveVariable(String variableName,
TextStringBuilder buf,
int startPos,
int endPos)
Internal method that resolves the value of a variable.
|
StringSubstitutor |
setDisableSubstitutionInValues(boolean disableSubstitutionInValues)
Sets a flag whether substitution is done in variable values (recursive).
|
StringSubstitutor |
setEnableSubstitutionInVariables(boolean enableSubstitutionInVariables)
Sets a flag whether substitution is done in variable names.
|
StringSubstitutor |
setEnableUndefinedVariableException(boolean failOnUndefinedVariable)
Sets a flag whether exception should be thrown if any variable is undefined.
|
StringSubstitutor |
setEscapeChar(char escapeCharacter)
Sets the escape character.
|
StringSubstitutor |
setPreserveEscapes(boolean preserveEscapes)
Sets a flag controlling whether escapes are preserved during substitution.
|
StringSubstitutor |
setValueDelimiter(char valueDelimiter)
Sets the variable default value delimiter to use.
|
StringSubstitutor |
setValueDelimiter(String valueDelimiter)
Sets the variable default value delimiter to use.
|
StringSubstitutor |
setValueDelimiterMatcher(StringMatcher valueDelimiterMatcher)
Sets the variable default value delimiter matcher to use.
|
StringSubstitutor |
setVariablePrefix(char prefix)
Sets the variable prefix to use.
|
StringSubstitutor |
setVariablePrefix(String prefix)
Sets the variable prefix to use.
|
StringSubstitutor |
setVariablePrefixMatcher(StringMatcher prefixMatcher)
Sets the variable prefix matcher currently in use.
|
StringSubstitutor |
setVariableResolver(StringLookup variableResolver)
Sets the VariableResolver that is used to lookup variables.
|
StringSubstitutor |
setVariableSuffix(char suffix)
Sets the variable suffix to use.
|
StringSubstitutor |
setVariableSuffix(String suffix)
Sets the variable suffix to use.
|
StringSubstitutor |
setVariableSuffixMatcher(StringMatcher suffixMatcher)
Sets the variable suffix matcher currently in use.
|
protected boolean |
substitute(TextStringBuilder builder,
int offset,
int length)
Internal method that substitutes the variables.
|
public static final char DEFAULT_ESCAPE
public static final String DEFAULT_VAR_DEFAULT
public static final String DEFAULT_VAR_END
public static final String DEFAULT_VAR_START
public static final StringMatcher DEFAULT_PREFIX
public static final StringMatcher DEFAULT_SUFFIX
public static final StringMatcher DEFAULT_VALUE_DELIMITER
public StringSubstitutor()
public StringSubstitutor(Map<String,V> valueMap)
V
- the type of the values in the mapvalueMap
- the map with the variables' values, may be nullpublic StringSubstitutor(Map<String,V> valueMap, String prefix, String suffix)
V
- the type of the values in the mapvalueMap
- the map with the variables' values, may be nullprefix
- the prefix for variables, not nullsuffix
- the suffix for variables, not nullIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(Map<String,V> valueMap, String prefix, String suffix, char escape)
V
- the type of the values in the mapvalueMap
- the map with the variables' values, may be nullprefix
- the prefix for variables, not nullsuffix
- the suffix for variables, not nullescape
- the escape characterIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(Map<String,V> valueMap, String prefix, String suffix, char escape, String valueDelimiter)
V
- the type of the values in the mapvalueMap
- the map with the variables' values, may be nullprefix
- the prefix for variables, not nullsuffix
- the suffix for variables, not nullescape
- the escape charactervalueDelimiter
- the variable default value delimiter, may be nullIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(StringLookup variableResolver)
variableResolver
- the variable resolver, may be nullpublic StringSubstitutor(StringLookup variableResolver, String prefix, String suffix, char escape)
variableResolver
- the variable resolver, may be nullprefix
- the prefix for variables, not nullsuffix
- the suffix for variables, not nullescape
- the escape characterIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(StringLookup variableResolver, String prefix, String suffix, char escape, String valueDelimiter)
variableResolver
- the variable resolver, may be nullprefix
- the prefix for variables, not nullsuffix
- the suffix for variables, not nullescape
- the escape charactervalueDelimiter
- the variable default value delimiter string, may be nullIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(StringLookup variableResolver, StringMatcher prefixMatcher, StringMatcher suffixMatcher, char escape)
variableResolver
- the variable resolver, may be nullprefixMatcher
- the prefix for variables, not nullsuffixMatcher
- the suffix for variables, not nullescape
- the escape characterIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(StringLookup variableResolver, StringMatcher prefixMatcher, StringMatcher suffixMatcher, char escape, StringMatcher valueDelimiterMatcher)
variableResolver
- the variable resolver, may be nullprefixMatcher
- the prefix for variables, not nullsuffixMatcher
- the suffix for variables, not nullescape
- the escape charactervalueDelimiterMatcher
- the variable default value delimiter matcher, may be nullIllegalArgumentException
- if the prefix or suffix is nullpublic StringSubstitutor(StringSubstitutor other)
other
- The StringSubstitutor used as the source.public static StringSubstitutor createInterpolator()
StringLookupFactory.interpolatorStringLookup()
.
This StringSubstitutor lets you perform substitutions like:
StringSubstitutor.createInterpolator().replace( "OS name: ${sys:os.name}, user: ${env:USER}");
The table below lists the lookups available by default in the returned instance. These
may be modified through the use of the
system property, as described in the StringLookupFactory
documentation.
NOTE: The list of lookups available by default changed in version 1.10.0
.
Configuration via system property (as mentioned above) may be necessary to reproduce previous functionality.
StringLookupFactory.interpolatorStringLookup()
public static <V> String replace(Object source, Map<String,V> valueMap)
V
- the type of the values in the mapsource
- the source text containing the variables to substitute, null returns nullvalueMap
- the map with the values, may be nullIllegalArgumentException
- if a variable is not found and enableUndefinedVariableException is truepublic static <V> String replace(Object source, Map<String,V> valueMap, String prefix, String suffix)
V
- the type of the values in the mapsource
- the source text containing the variables to substitute, null returns nullvalueMap
- the map with the values, may be nullprefix
- the prefix of variables, not nullsuffix
- the suffix of variables, not nullIllegalArgumentException
- if the prefix or suffix is nullIllegalArgumentException
- if a variable is not found and enableUndefinedVariableException is truepublic static String replace(Object source, Properties valueProperties)
source
- the source text containing the variables to substitute, null returns nullvalueProperties
- the properties with values, may be nullIllegalArgumentException
- if a variable is not found and enableUndefinedVariableException is truepublic static String replaceSystemProperties(Object source)
source
- the source text containing the variables to substitute, null returns nullIllegalArgumentException
- if a variable is not found and enableUndefinedVariableException is truepublic char getEscapeChar()
public StringLookup getStringLookup()
public StringMatcher getValueDelimiterMatcher()
The variable default value delimiter is the character or characters that delimit the variable name and the variable default value. This delimiter is expressed in terms of a matcher allowing advanced variable default value delimiter matches.
If it returns null, then the variable default value resolution is disabled.
public StringMatcher getVariablePrefixMatcher()
The variable prefix is the character or characters that identify the start of a variable. This prefix is expressed in terms of a matcher allowing advanced prefix matches.
public StringMatcher getVariableSuffixMatcher()
The variable suffix is the character or characters that identify the end of a variable. This suffix is expressed in terms of a matcher allowing advanced suffix matches.
public boolean isDisableSubstitutionInValues()
Map<String, String> valuesMap = new HashMap<>(); valuesMap.put("name", "Douglas ${surname}"); valuesMap.put("surname", "Crockford"); String templateString = "Hi ${name}"; StrSubstitutor sub = new StrSubstitutor(valuesMap); String resolvedString = sub.replace(templateString);yielding:
Hi Douglas ${surname}
public boolean isEnableSubstitutionInVariables()
public boolean isEnableUndefinedVariableException()
public boolean isPreserveEscapes()
public String replace(char[] source)
source
- the character array to replace in, not altered, null returns nullIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(char[] source, int offset, int length)
Only the specified portion of the array will be processed. The rest of the array is not processed, and is not returned.
source
- the character array to replace in, not altered, null returns nulloffset
- the start offset within the array, must be validlength
- the length within the array to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionStringIndexOutOfBoundsException
- if offset
is not in the
range 0 <= offset <= chars.length
StringIndexOutOfBoundsException
- if length < 0
StringIndexOutOfBoundsException
- if offset + length > chars.length
public String replace(CharSequence source)
source
- the buffer to use as a template, not changed, null returns nullIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(CharSequence source, int offset, int length)
Only the specified portion of the buffer will be processed. The rest of the buffer is not processed, and is not returned.
source
- the buffer to use as a template, not changed, null returns nulloffset
- the start offset within the array, must be validlength
- the length within the array to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(Object source)
toString
and is not altered.source
- the source to replace in, null returns nullIllegalArgumentException
- if a variable is not found and enableUndefinedVariableException is truepublic String replace(String source)
source
- the string to replace in, null returns nullIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(String source, int offset, int length)
Only the specified portion of the string will be processed. The rest of the string is not processed, and is not returned.
source
- the string to replace in, null returns nulloffset
- the start offset within the source, must be validlength
- the length within the source to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionStringIndexOutOfBoundsException
- if offset
is not in the
range 0 <= offset <= source.length()
StringIndexOutOfBoundsException
- if length < 0
StringIndexOutOfBoundsException
- if offset + length > source.length()
public String replace(StringBuffer source)
source
- the buffer to use as a template, not changed, null returns nullIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(StringBuffer source, int offset, int length)
Only the specified portion of the buffer will be processed. The rest of the buffer is not processed, and is not returned.
source
- the buffer to use as a template, not changed, null returns nulloffset
- the start offset within the source, must be validlength
- the length within the source to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(TextStringBuilder source)
source
- the builder to use as a template, not changed, null returns nullIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic String replace(TextStringBuilder source, int offset, int length)
Only the specified portion of the builder will be processed. The rest of the builder is not processed, and is not returned.
source
- the builder to use as a template, not changed, null returns nulloffset
- the start offset within the source, must be validlength
- the length within the source to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic boolean replaceIn(StringBuffer source)
source
- the buffer to replace in, updated, null returns zeropublic boolean replaceIn(StringBuffer source, int offset, int length)
Only the specified portion of the buffer will be processed. The rest of the buffer is not processed, but it is not deleted.
source
- the buffer to replace in, updated, null returns zerooffset
- the start offset within the source, must be validlength
- the length within the source to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic boolean replaceIn(StringBuilder source)
source
- the buffer to replace in, updated, null returns zeropublic boolean replaceIn(StringBuilder source, int offset, int length)
Only the specified portion of the buffer will be processed. The rest of the buffer is not processed, but it is not deleted.
source
- the buffer to replace in, updated, null returns zerooffset
- the start offset within the source, must be validlength
- the length within the source to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic boolean replaceIn(TextStringBuilder source)
source
- the builder to replace in, updated, null returns zeroIllegalArgumentException
- if variable is not found when its allowed to throw exceptionpublic boolean replaceIn(TextStringBuilder source, int offset, int length)
Only the specified portion of the builder will be processed. The rest of the builder is not processed, but it is not deleted.
source
- the builder to replace in, null returns zerooffset
- the start offset within the source, must be validlength
- the length within the source to be processed, must be validIllegalArgumentException
- if variable is not found when its allowed to throw exceptionprotected String resolveVariable(String variableName, TextStringBuilder buf, int startPos, int endPos)
Most users of this class do not need to call this method. This method is called automatically by the substitution process.
Writers of subclasses can override this method if they need to alter how each substitution occurs. The method is
passed the variable's name and must return the corresponding value. This implementation uses the
getStringLookup()
with the variable's name as the key.
variableName
- the name of the variable, not nullbuf
- the buffer where the substitution is occurring, not nullstartPos
- the start position of the variable including the prefix, validendPos
- the end position of the variable including the suffix, validpublic StringSubstitutor setDisableSubstitutionInValues(boolean disableSubstitutionInValues)
disableSubstitutionInValues
- true if substitution in variable value are disabledpublic StringSubstitutor setEnableSubstitutionInVariables(boolean enableSubstitutionInVariables)
${jre-${java.version}}
. The default value is false.enableSubstitutionInVariables
- the new value of the flagpublic StringSubstitutor setEnableUndefinedVariableException(boolean failOnUndefinedVariable)
failOnUndefinedVariable
- true if exception should be thrown on undefined variablepublic StringSubstitutor setEscapeChar(char escapeCharacter)
escapeCharacter
- the escape character (0 for disabling escaping)public StringSubstitutor setPreserveEscapes(boolean preserveEscapes)
$${this-is-escaped}
remains $${this-is-escaped}
).
If set to false, the escape character is removed during substitution (e.g. $${this-is-escaped}
becomes ${this-is-escaped}
). The default value is falsepreserveEscapes
- true if escapes are to be preservedpublic StringSubstitutor setValueDelimiter(char valueDelimiter)
The variable default value delimiter is the character or characters that delimit the variable name and the variable default value. This method allows a single character variable default value delimiter to be easily set.
valueDelimiter
- the variable default value delimiter character to usepublic StringSubstitutor setValueDelimiter(String valueDelimiter)
The variable default value delimiter is the character or characters that delimit the variable name and the variable default value. This method allows a string variable default value delimiter to be easily set.
If the valueDelimiter
is null or empty string, then the variable default value resolution becomes
disabled.
valueDelimiter
- the variable default value delimiter string to use, may be null or emptypublic StringSubstitutor setValueDelimiterMatcher(StringMatcher valueDelimiterMatcher)
The variable default value delimiter is the character or characters that delimit the variable name and the variable default value. This delimiter is expressed in terms of a matcher allowing advanced variable default value delimiter matches.
If the valueDelimiterMatcher
is null, then the variable default value resolution becomes disabled.
valueDelimiterMatcher
- variable default value delimiter matcher to use, may be nullpublic StringSubstitutor setVariablePrefix(char prefix)
The variable prefix is the character or characters that identify the start of a variable. This method allows a single character prefix to be easily set.
prefix
- the prefix character to usepublic StringSubstitutor setVariablePrefix(String prefix)
The variable prefix is the character or characters that identify the start of a variable. This method allows a string prefix to be easily set.
prefix
- the prefix for variables, not nullIllegalArgumentException
- if the prefix is nullpublic StringSubstitutor setVariablePrefixMatcher(StringMatcher prefixMatcher)
The variable prefix is the character or characters that identify the start of a variable. This prefix is expressed in terms of a matcher allowing advanced prefix matches.
prefixMatcher
- the prefix matcher to use, null ignoredIllegalArgumentException
- if the prefix matcher is nullpublic StringSubstitutor setVariableResolver(StringLookup variableResolver)
variableResolver
- the VariableResolverpublic StringSubstitutor setVariableSuffix(char suffix)
The variable suffix is the character or characters that identify the end of a variable. This method allows a single character suffix to be easily set.
suffix
- the suffix character to usepublic StringSubstitutor setVariableSuffix(String suffix)
The variable suffix is the character or characters that identify the end of a variable. This method allows a string suffix to be easily set.
suffix
- the suffix for variables, not nullIllegalArgumentException
- if the suffix is nullpublic StringSubstitutor setVariableSuffixMatcher(StringMatcher suffixMatcher)
The variable suffix is the character or characters that identify the end of a variable. This suffix is expressed in terms of a matcher allowing advanced suffix matches.
suffixMatcher
- the suffix matcher to use, null ignoredIllegalArgumentException
- if the suffix matcher is nullprotected boolean substitute(TextStringBuilder builder, int offset, int length)
Most users of this class do not need to call this method. This method will be called automatically by another (public) method.
Writers of subclasses can override this method if they need access to the substitution process at the start or end.
builder
- the string builder to substitute into, not nulloffset
- the start offset within the builder, must be validlength
- the length within the builder to be processed, must be validCopyright © 2014–2022 The Apache Software Foundation. All rights reserved.