REPLRIGHT()

REPLRIGHT()

Replace certain characters at the right of a string

Syntax

      REPLRIGHT( <cString>, <cReplace|nReplace>, [<cSearch|nSearch>] )
                     -> cString

Arguments

<cString> [@] Designates the string that is processed.

<cReplace|nReplace> Designates the character that replaces the character in <cSearch|nSearch> at the end of the <cString>.

<cSearch|nSearch> Designates the character at the end of <cString> that is replaced by <cReplace|nReplace>. The default value is a space, CHR(32).

Returns

The processed <cString> is returned.

Description

REPLRIGHT() can be used to exchange all trailing characters in a string for any character choosen.

Note

. The return value of this function can be suppressed by implementing CSETREF() to save space in working memory.

Examples

       .  Replace the trailing spaces with dashes:
          ? REPLRIGHT("abcd  ", "-")        // "abcd--"
       .  Replace the trailing dashes with spaces:
          ? REPLRIGHT("abcd--", " ", "-")   // "abcd  "
       .  Replace only the trailing spaces:
          ? REPLRIGHT("   1  ", "-")        // "   1--"

Compliance

REPLRIGHT() is compatible with CT3’s REPLRIGHT().

Platforms

All

Files

Source is replace.c, library is libct.

Seealso

REPLALL(), REPLLEFT(), CSETREF(), Introduction

REPLLEFT()

REPLLEFT()

Replace certain characters at the left of a string

Syntax

      REPLLEFT( <cString>, <cReplace|nReplace>,
                                [<cSearch|nSearch>] ) -> cString

Arguments

<cString> [@] Designates the string that is processed.

<cReplace|nReplace> Designates the character that replaces the character in <cSearch|nSearch> at the beginning of the <cString>.

<cSearch|nSearch> Designates the character at the beginning of <cString> that is replaced by <cSearch|nSearch>. The default value is a

space, CHR(32).

Returns

The processed <cString> is returned.

Description

REPLLEFT() can be used to exchange all leading characters in a string for any other selected character.

Note

. The return value of this function can be suppressed by implementing CSETREF() to save space in working memory.

Examples

       .  Replace the leading spaces with zeros:
          ? REPLLEFT("  1234", "0")              // "001234"
       .  Replace the leading zeros with spaces:
          ? REPLLEFT("001234", " ", "0")         // "  1234"
       .  Replace only the leading spaces:
          ? REPLLEFT("  1    ", "0")             // "001   "

Compliance

REPLLEFT() is compatible with CT3’s REPLLEFT().

Platforms

All

Files

Source is replace.c, library is libct.

Seealso

REPLALL(), REPLRIGHT(), CSETREF(), Introduction

REPLALL()

REPLALL()

Replace certain characters at the left and right of a string

Syntax

      REPLALL( <cString>, <cReplace|nReplace>,
              [<cSearch|nSearch>] ) -> cString

Arguments

<cString> [@] Designates the string that is processed.

<cReplace|nReplace> Designates the character that replaces the character in <cSearch|nSearch> at the beginning and end of <cString>.

<cSearch|nSearch> Designates the character at the beginning and end of <cString> that is replaced by <cReplace|nReplace>. The default value designates a space, CHR(32).

Returns

The processed <cString> is returned.

Description

REPLALL() can be used to exchange all leading and trailing spaces in a character string for any other character. Notice that the first non- replaceable character in either direction causes REPLALL() to stop replacing characters on that side.

Note

. The return value of this function can be suppressed by implementing CSETREF() to save space in working memory.

Examples

      .  Replace spaces with dashes.  Replace the spaces 
         only on the side where the character was found:
         ? REPLALL("abcd  ", "-")           // "abcd--"
      .  Replace zeros with spaces:
         ? REPLALL("001234", " ", "0")      // "  1234"
      .  Replace the blanks with dashes on both sides:
         ? REPLALL("   d  ", "-")           // "---d--"
      .  Replace only continuous sequences of characters at the
         beginning and the end of the character string:
         ? REPLALL(" d d  ", "-")           // "-d d--"

Compliance

REPLALL() is compatible with CT3’s REPLALL().

Platforms

All

Files

Source is replace.c, library is libct.

Seealso

REPLLEFT(), REPLRIGHT(), CSETREF(), Introduction

RANGEREPL()

RANGEREPL()

Replace characters within a certain ASCII range from a string

Syntax

       RANGEREPL( <cChar1|nChar1>, <cChar2|nChar2>,
           <[@]cString>, <cReplacementChar|nReplacementChar> ) 
           -> cString

Arguments

<cChar1|nChar1> and <cChar2|nChar> Designate the first and the last character of the character range.

<cString> [@] Designates the string that is processed.

<cReplacementChar|nReplacementChar> Designates the single character that replaces those characters in <cString> that are within the specified range.

Returns

The processed character string is returned.

Description

All characters that are in a particular range can be replaced by a new character. For example, you could replace all control characters with spaces. The designated range can also run from “back to front”, meaning that <cChar2|nChar2 can have a lower value than <cChar1|nChar1. In such a case the range extends from the larger value to 255 and from 0 to the smaller value.

Notes

. The length of <cString> remains unaffected by this function. . The return value of this function can be suppressed by implementing CSETREF() to save room in working memory.

Examples

        . ? rangerepl( "0", "9", "year2002.dbf", "?" )
                              // "year????.dbf", replace all digits
        . ? rangerepl( "9", "0", "year2002.dbf", "?" )
                  // "????2??2????", testing replacement from
                  // "9" to chr(255) and from chr(0) to "0"
        . ? rangerepl( "0", "9", "yearcurr.dbf", "?" )
                  // "yearcurr.dbf", test leaving string untouched
        .  Exchange all control characters in a character string for the
              character ".":
              cString  :=  "a" + CHR(5) + "b" + CHR(9)
              ? RANGEREPL(CHR(0), CHR(31), cString, ".")   // "a.b."
        .  A null string can be specified, instead of CHR(0).  The
           following example exchanges all characters with a code < "A" for
           the number "0".  Of course, the number "0" remains the number "0":
           ? RANGEREPL("", CHR(65), "123400", "0")      // "000000"
        .  All characters in the range "0" to "8" are exchanged for the
           number "9":
           ? RANGEREPL("0", "8", "0212 - 78 67 43", "9")
                                                        // "9999 - 99 99 99"
        .  With the exception of upper case letters, all characters are
           exchanged for dashes.  The optimum call is in conjunction with
           CSETREF():
           CSETREF(.T.)
           cString  :=  "A()&BC/?D"
           RANGEREPL(91, 64, @cString, "-")             // "A--BC--D"

Tests

       rangerepl( "0", "9", "year2002.dbf", "?" ) == "year????.dbf"
       rangerepl( "9", "0", "year2002.dbf", "?" ) == "????2??2????"
       rangerepl( "0", "9", "yearcurr.dbf", "?" ) == "yearcurr.dbf"

Compliance

RANGEREPL() is compatible with CT3’s RANGEREPL().

Platforms

All

Files

Source is range.c, library is libct.

Seealso

RANGEREM(), POSREPL(), CHARREPL(), CSETREF(), Introduction

POSREPL()

POSREPL()

Replace characters at a certain position within a string

Syntax

        POSREPL( <[@]cString>, <cReplacement>,
                [<nStartPosition>] ) -> cString

Arguments

<cString> [@] Designates the character string within which the particular characters are replaced.

<cReplacementstring> Designates a sequence of characters that, starting at <nStartPos>, replace a portion of

<cString>. <nStartPos> Designates from which character within <cString> the replacement starts.

Returns

POSREPL() returns the modified string.

Description

When you use POSREPL(), you can replace a range of characters within <cString> with another character string <cReplacementstring>. The new characters are exchanged beginning at <nStartPos>.

Notes

. When the <nStartPos> parameter is not specified, the <cReplacementstring> overwrites the end of the string (see examples). . The return value of this function can be suppressed by implementing CSETREF() to save space in working memory.

Examples

       .  Starting at position 3, replace three characters with "XXX":
              ? POSREPL("ABCDEFG", "XXX", 3)         // "ABXXXFG"
           .  Replace the last LEN(<cReplacementstring>) characters:
              ? POSREPL("ABCDEFG", "XXX")            // "ABCDXXX"
           .  The result can be longer than the character string passed.
              ? POSREPL("ABCDEF", "123", 5)          // "ABCD123"
              ? POSREPL("ABCDEF", "123", 6)          // "ABCDE123"

Compliance

POSREPL() is compatible with CT3’s POSREPL().

Platforms

All

Files

Source is pos2.c, library is libct.

Seealso

POSCHAR(), POSDEL(), POSINS(), CSETREF()

POSCHAR()

POSCHAR()

Replace character at a certain position within a string

Syntax

       POSCHAR(<cString>,<cCharacter|nCharacter>,
              [<nPosition>]) --> cString

Arguments

<cString> [@] Designates the character string within which the individual character

<cCharacter|nCharacter> is substituted. <cCharacter|nCharacter> Designates an individual character or a numeric ASCII value from 0 to 255.

<nPosition> Designates the position at which the character is substituted. The default value is the last position in <cString>.

Returns

The string returned is the <cString> with a <cCharacter|nCharacter> character in the selected position.

Description

POSCHAR() allows you to replace an individual character within a string without having to split the string. Since this character is only substituted at the designated position within <cString>, the string that is modified can be passed by reference.

Note

. The value returned by this function can be suppressed by implementing CSETREF() to save space in working memory.

Examples

       .  Substitute a character at position 3:
              ? POSCHAR("ABCDEF", "X", 3)   // "ABXDEF"
           .  Substitute a character in the last position:
              ? POSCHAR("ABCDEF", "X")      // "ABCDEX"
           .  Pass the string by reference:
              CSETREF(.T.)                  // Suppress return value
              cVar  := "ABCDEF"
              POSCHAR(cVar, "X")
              ? cVar                        // "ABCDEX"

Compliance

POSCHAR() is compatible with CT3’s POSCHAR().

Platforms

All

Files

Source is pos2.c, library is libct.

Seealso

POSDEL(), POSINS(), POSREPL(), CSETREF()

JustRight()

JustRight()

Move characters from the end to the beginning of a string

Syntax

       JustRight( <[@]cString>, [<cChar>|<nChar>] ) -> cJustifiedString

Arguments

<cString> [@] Designates the string that is processed. <cCharacter|nCharacter> Designates the character that is moved from the end of the <cString> to the beginning. The default value is a space, CHR(32).

Returns

The processed <cString> is returned.

Description

JustRight() moves the characters specified in <cCharacter| nCharacter> from the end of a character string to the beginning. Then the remaining text in the character string is right justified, without affecting the length.

Notes

. If the <cCharacter|nCharacter> parameter is not specified, spaces are automatically moved. . The return value for this function can be suppressed by implementing CSETREF() to save room in working memory.

Examples

       .  Move the blanks
              ? JustRight("123   ")           // "   123"
           .  Move the "." character
              ? JustRight("123..", ".")       // "..123 "

Compliance

JustRight() is compatible with CT3’s JustRight().

Platforms

All

Files

Source is justify.c, library is libct.

Seealso

JustLeft(), CSetRef(), Introduction

JustLeft()

JustLeft()

Moves characters from the beginning to the end of a string

Syntax

       JustLeft( <[@]cString>, [<cChar>|<nChar>] ) -> cJustifiedString

Arguments

<cString> [@] Designates the string that is processed. <cCharacter|nCharacter> Designates the character that is moved from the beginning of the <cString> to the end. The default value is a space, CHR(32).

Returns

The processed <cString> is returned.

Description

JustLeft() moves the characters specified in <cCharacter|nCharacter> from the beginning of a character string to the end. Then the remaining text in the character string is left justified, without affecting the length.

Notes

. If the <cCharacter|nCharacter> parameter is not specified, spaces are automatically moved. . The return value for this function can be suppressed by implementing CSETREF() to save room in working memory.

Examples

       .  Move the blanks:
              ? JustLeft("   123")              // "123   "
           .  Move the "." character:
              ? JustLeft("..123","." )          // "123.."

See also

JustRight(), CSetRef(), Introduction

WordSwap()

WordSwap()

Swap neighbouring double characters in a string

Syntax

      WordSwap( <[@]cString> [, <lSwapCharacters>] ) -> cSwappedString

Arguments

<[@]cString>is the string that should be processed

[<lSwapCharacters>] specifies whether an additional swap should be done within the double characters Default: .F., no additional swap

Returns

<cSwappedString> a string where neighbouring double characters are swapped

Description

The WordSwap() function loops through <cString> in steps of four characters and exchanges the double characters from the first and second position with the one from the third and forth position. Additionally the function can perform a swap of the both char of each double character.

By setting the CSETREF() switch to .T., one can omit the return value of this function, but one must then pass <cString> by reference.

Examples

      ? WordSwap( "1234567890" )       // "3412785690"
      ? WordSwap( "1234567890", .T. )  // "4321876590"

Tests

      WordSwap( "1234567890" )      == "3412785690"
      WordSwap( "1234567890", .T. ) == "4321876590"

Compliance

WordSwap() is compatible with CT3’s WordSwap().

Platforms

All

Files

Source is charswap.c, library is libct.

Seealso

CHARSWAP(), CSETREF()

WordRepl()

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()