RANGEREPL() Replaces characters within a specified ASCII code range with a particular character ------------------------------------------------------------------------------ Syntax RANGEREPL(<cCharacter1>,<cCharacter2>,<cString>, <cReplaceCharacter>) --> cString Arguments <cCharacter1> and <cCharacter2> Designate the first and the last character of the character range. <cString> [@] Designates the string that is processed. <cReplaceCharacter> 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 <cCharacter2> can have a lower value than <cCharacter1>. 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 . 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"
See Also: POSREPL() CHARREPL() CSETREF() Introduction