WordRepl()
Replacement of double characters
Syntax
WordRepl( <cDoubleCharacterSearchString>, <[@]cString>, <cDoubleCharacterReplaceString>, [<lMode>] ) -> <cString>
Arguments
<cDoubleCharacterSearchString> is a string of double characters that should be replaced
<[@]cString>is the processed string
<cDoubleCharacterReplaceString> is a string of double characters that replace the one of <cSearchString>
[<lMode>] sets the replacement method (see description) Default: .F.
Returns
<cString> the processed string
Description
The WordRepl() takes the double characters of <cDoubleCharacterSearchString> one after the other and searches for them in <cString>. For <lMode> set to .F., this search is successful, if the double character sequence in <cString> starts at an odd position or at any position, if <lMode> is set to .T.
If this happens, the double character sequence will be replaced with the corresponding double character sequence of <cDoubleCharacter ReplaceString>. If <cDoubleCharacter ReplaceString> is shorter than <cDoubleCharacter SearchString> the last double sequence of <cDoubleCharacter ReplaceString> is used for the “rest” of <cDoubleCharacter SearchString>. Note that the last double character sequence in “AABBC” is “BB” in this context !!
After the replacement the function restarts the search in <cString> BEHIND the replacement if the CSETATMUPA() switch is turned off, or BEHIND the first character of the replacement if the switch is turned on. (see examples for this !) One can omit the return value of this function by setting the CSETREF() to .T., but one must then pass <cString> by reference to get a result.
Examples
? WordRepl( "CC", "AABBCCDDEE", "XX" ) // "AABBXXDDEE" ? WordRepl( "aa", "1aaaa", "ba" ) // "1abaa" ? WordRepl( "aa", "1aaaa", "ba", .T. ) // "1baba" csetatmupa( .T. ) ? WordRepl( "aa", "1aaaa", "ba" ) // "1abaa" ? WordRepl( "aa", "1aaaa", "ba", .T. ) // "1bbba"
Tests
WordRepl( "CC", "AABBCCDDEE", "XX" ) == "AABBXXDDEE" WordRepl( "aa", "1aaaa", "ba" ) == "1abaa" WordRepl( "aa", "1aaaa", "ba", .T. ) == "1baba" Eval( {|| csetatmupa( .T. ), WordRepl( "aa", "1aaaa", "ba" ) } ) == "1abaa" Eval( {|| csetatmupa( .T. ), WordRepl( "aa", "1aaaa", "ba", .T. ) } ) == "1bbba"
Compliance
WordRepl() is compatible with CT3’s WordRepl().
Platforms
All
Files
Source is wordrepl.c, library is ct3.
Seealso
CHARREPL(), RANGEREPL(), POSREPL(), CSETREF(), CSETATMUPA()
Pingback: Harbour All Functions – W | Viva Clipper !
Pingback: Harbour String Functions | Viva Clipper !