Package adams.flow.transformer
Class StringReplace
-
- All Implemented Interfaces:
AdditionalInformationHandler
,CleanUpHandler
,Destroyable
,GlobalInfoSupporter
,LoggingLevelHandler
,LoggingSupporter
,OptionHandler
,QuickInfoSupporter
,ShallowCopySupporter<Actor>
,SizeOfHandler
,Stoppable
,StoppableWithFeedback
,VariablesInspectionHandler
,VariableChangeListener
,Actor
,ErrorHandler
,InputConsumer
,OutputProducer
,Serializable
,Comparable
public class StringReplace extends AbstractStringOperation
Performs a string replacement, using either String.replaceFirst(...) or String.replaceAll(...). Special characters like \n \r \t and \ need to be escaped properly. The input is expected to be escaped, i.e., the string "\t" will get turned into the character '\t'.
If the 'replace' string contains both, variables and placeholders, then first all variables are expanded and then the placeholders. This ensures that variables containing placeholders expand their placeholders as well. Not expanding placeholders will cause 'Illegal group reference' error messages.
By enabling 'useDotAll', matching across lines is possible as well.
If no regular expression matching is required, you can also use the simple replacing, which uses String.replace(...).
Input/output:
- accepts:
java.lang.String
java.lang.String[]
- generates:
java.lang.String
java.lang.String[]
-logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel) The logging level for outputting errors and debugging output. default: WARNING min-user-mode: Expert
-name <java.lang.String> (property: name) The name of the actor. default: StringReplace
-annotation <adams.core.base.BaseAnnotation> (property: annotations) The annotations to attach to this actor. default:
-skip <boolean> (property: skip) If set to true, transformation is skipped and the input token is just forwarded as it is. default: false
-stop-flow-on-error <boolean> (property: stopFlowOnError) If set to true, the flow execution at this level gets stopped in case this actor encounters an error; the error gets propagated; useful for critical actors. default: false min-user-mode: Expert
-silent <boolean> (property: silent) If enabled, then no errors are output in the console; Note: the enclosing actor handler must have this enabled as well. default: false min-user-mode: Expert
-find <adams.core.base.BaseRegExp> (property: find) The string to find (a regular expression). default: find more: https://docs.oracle.com/javase/tutorial/essential/regex/ https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html
-replace <java.lang.String> (property: replace) The string to replace the occurrences with. default:
-type <FIRST|ALL|SIMPLE> (property: replaceType) Defines whether to use regular expression replacement (first/all) or simple string sequence replacement. default: FIRST
-placeholder <boolean> (property: replaceContainsPlaceholder) Set this to true to enable automatic placeholder expansion for the replacement string. default: false
-variable <boolean> (property: replaceContainsVariable) Set this to true to enable automatic variable expansion for the replacement string. default: false
-use-dot-all <boolean> (property: useDotAll) If enabled, new-lines are treated as regular characters, enabling matching across multiple lines, see: https://docs.oracle.com/en/java/javase/11/docs /api/java.base/java/util/regex/Pattern.html#DOTALL default: false
- Author:
- fracpete (fracpete at waikato dot ac dot nz)
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StringReplace.ReplaceType
The type of replace to use.
-
Field Summary
Fields Modifier and Type Field Description protected BaseRegExp
m_Find
the string to find.protected Pattern
m_Pattern
the pattern.protected String
m_Replace
the replacement string.protected boolean
m_ReplaceContainsPlaceholder
whether the replace string contains a placeholder, which needs to be expanded first.protected boolean
m_ReplaceContainsVariable
whether the replace string contains a variable, which needs to be expanded first.protected StringReplace.ReplaceType
m_ReplaceType
how to replace the occurrences.protected boolean
m_UseDotAll
whether to use dot all.-
Fields inherited from class adams.flow.transformer.AbstractTransformer
BACKUP_INPUT, BACKUP_OUTPUT, m_InputToken, m_OutputToken
-
Fields inherited from class adams.flow.core.AbstractActor
m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
-
Fields inherited from class adams.core.option.AbstractOptionHandler
m_OptionManager
-
Fields inherited from class adams.core.logging.LoggingObject
m_Logger, m_LoggingIsEnabled, m_LoggingLevel
-
Fields inherited from interface adams.flow.core.Actor
FILE_EXTENSION, FILE_EXTENSION_GZ
-
-
Constructor Summary
Constructors Constructor Description StringReplace()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
defineOptions()
Adds options to the internal list of options.String
findTipText()
Returns the tip text for this property.BaseRegExp
getFind()
Returns the string to find (regular expression).String
getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.String
getReplace()
Returns the string to replace the occurences with.boolean
getReplaceContainsPlaceholder()
Returns whether the replace string contains a placeholder which needs to be expanded first.boolean
getReplaceContainsVariable()
Returns whether the replace string contains a variable which needs to be expanded first.StringReplace.ReplaceType
getReplaceType()
Returns the type of replacement.boolean
getUseDotAll()
Returns whether to enabled matching across multiple lines.String
globalInfo()
Returns a string describing the object.protected String
process(String s, int index)
Processes the string.String
replaceContainsPlaceholderTipText()
Returns the tip text for this property.String
replaceContainsVariableTipText()
Returns the tip text for this property.String
replaceTipText()
Returns the tip text for this property.String
replaceTypeTipText()
Returns the tip text for this property.protected void
reset()
Resets the scheme.void
setFind(BaseRegExp value)
Sets the string to find (regular expression).void
setReplace(String value)
Sets the string to replace the occurrences with.void
setReplaceContainsPlaceholder(boolean value)
Sets whether the replace string contains a placeholder which needs to be expanded first.void
setReplaceContainsVariable(boolean value)
Sets whether the replace string contains a variable which needs to be expanded first.void
setReplaceType(StringReplace.ReplaceType value)
Sets how to replace the strings.void
setUseDotAll(boolean value)
Sets whether to enabled matching across multiple lines.String
useDotAllTipText()
Returns the tip text for this property.-
Methods inherited from class adams.flow.transformer.AbstractStringOperation
accepts, doExecute, generates
-
Methods inherited from class adams.flow.transformer.AbstractTransformer
backupState, currentInput, execute, hasInput, hasPendingOutput, input, output, postExecute, restoreState, wrapUp
-
Methods inherited from class adams.flow.core.AbstractActor
annotationsTipText, canInspectOptions, canPerformSetUpCheck, cleanUp, compareTo, configureLogger, destroy, equals, finalUpdateVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, initialize, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, preExecute, pruneBackup, pruneBackup, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged
-
Methods inherited from class adams.core.option.AbstractOptionHandler
cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine, toString
-
Methods inherited from class adams.core.logging.LoggingObject
getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface adams.flow.core.Actor
cleanUp, compareTo, destroy, equals, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, stopExecution, toCommandLine, variableChanged
-
Methods inherited from interface adams.core.AdditionalInformationHandler
getAdditionalInformation
-
Methods inherited from interface adams.core.logging.LoggingLevelHandler
getLoggingLevel, setLoggingLevel
-
Methods inherited from interface adams.core.logging.LoggingSupporter
getLogger, isLoggingEnabled
-
Methods inherited from interface adams.core.option.OptionHandler
cleanUpOptions, getOptionManager
-
Methods inherited from interface adams.core.VariablesInspectionHandler
canInspectOptions
-
-
-
-
Field Detail
-
m_Find
protected BaseRegExp m_Find
the string to find.
-
m_Replace
protected String m_Replace
the replacement string.
-
m_ReplaceType
protected StringReplace.ReplaceType m_ReplaceType
how to replace the occurrences.
-
m_ReplaceContainsPlaceholder
protected boolean m_ReplaceContainsPlaceholder
whether the replace string contains a placeholder, which needs to be expanded first.
-
m_ReplaceContainsVariable
protected boolean m_ReplaceContainsVariable
whether the replace string contains a variable, which needs to be expanded first.
-
m_UseDotAll
protected boolean m_UseDotAll
whether to use dot all.
-
m_Pattern
protected transient Pattern m_Pattern
the pattern.
-
-
Method Detail
-
globalInfo
public String globalInfo()
Returns a string describing the object.- Specified by:
globalInfo
in interfaceGlobalInfoSupporter
- Specified by:
globalInfo
in classAbstractOptionHandler
- Returns:
- a description suitable for displaying in the gui
-
defineOptions
public void defineOptions()
Adds options to the internal list of options.- Specified by:
defineOptions
in interfaceOptionHandler
- Overrides:
defineOptions
in classAbstractActor
-
reset
protected void reset()
Resets the scheme.- Overrides:
reset
in classAbstractActor
-
getQuickInfo
public String getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.- Specified by:
getQuickInfo
in interfaceActor
- Specified by:
getQuickInfo
in interfaceQuickInfoSupporter
- Overrides:
getQuickInfo
in classAbstractActor
- Returns:
- null if no info available, otherwise short string
-
setFind
public void setFind(BaseRegExp value)
Sets the string to find (regular expression).- Parameters:
value
- the string
-
getFind
public BaseRegExp getFind()
Returns the string to find (regular expression).- Returns:
- the string
-
findTipText
public String findTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setReplace
public void setReplace(String value)
Sets the string to replace the occurrences with.- Parameters:
value
- the string
-
getReplace
public String getReplace()
Returns the string to replace the occurences with.- Returns:
- the string
-
replaceTipText
public String replaceTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setReplaceType
public void setReplaceType(StringReplace.ReplaceType value)
Sets how to replace the strings.- Parameters:
value
- the type
-
getReplaceType
public StringReplace.ReplaceType getReplaceType()
Returns the type of replacement.- Returns:
- the type
-
replaceTypeTipText
public String replaceTypeTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setReplaceContainsPlaceholder
public void setReplaceContainsPlaceholder(boolean value)
Sets whether the replace string contains a placeholder which needs to be expanded first.- Parameters:
value
- true if replace string contains a placeholder
-
getReplaceContainsPlaceholder
public boolean getReplaceContainsPlaceholder()
Returns whether the replace string contains a placeholder which needs to be expanded first.- Returns:
- true if replace string contains a placeholder
-
replaceContainsPlaceholderTipText
public String replaceContainsPlaceholderTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setReplaceContainsVariable
public void setReplaceContainsVariable(boolean value)
Sets whether the replace string contains a variable which needs to be expanded first.- Parameters:
value
- true if replace string contains a variable
-
getReplaceContainsVariable
public boolean getReplaceContainsVariable()
Returns whether the replace string contains a variable which needs to be expanded first.- Returns:
- true if replace string contains a variable
-
replaceContainsVariableTipText
public String replaceContainsVariableTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setUseDotAll
public void setUseDotAll(boolean value)
Sets whether to enabled matching across multiple lines.- Parameters:
value
- true if to use dot all
-
getUseDotAll
public boolean getUseDotAll()
Returns whether to enabled matching across multiple lines.- Returns:
- true if to use dot all
-
useDotAllTipText
public String useDotAllTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
process
protected String process(String s, int index)
Processes the string.- Specified by:
process
in classAbstractStringOperation
- Parameters:
s
- the string to processindex
- the 0-based index of the string currently being processed- Returns:
- the processed string or null if nothing produced
-
-