我想这取决于你对特殊字符的定义.
您可以删除任何字符REPLACE.只需将替换的to-string部分设置为空白("")即可.
句法:
REPLACE(source-string,from-string,to-string)
例:
DEFINE VARIABLE cOldString AS CHARACTER NO-UNDO.
DEFINE VARIABLE cNewString AS CHARACTER NO-UNDO.
cOldString = "ABC123AACCC".
cNewString = REPLACE(cOldString, "A", "").
DISPLAY cNewString FORMAT "x(10)".
Run Code Online (Sandbox Code Playgroud)
您可以使用REPLACE删除完整的匹配字符串.例如:
REPLACE("This is a text with HTML entity &", "&", "").
Run Code Online (Sandbox Code Playgroud)
处理"特殊字符"可以通过多种方式完成.如果您指的是特殊的"ASCII"字符,如换行符,铃声等,您可以将REPLACE与CHR功能一起使用.
基本语法(您可以添加一些有关代码页的信息,但很少需要):
CHR(表达)
expression:一个表达式,它生成一个要转换为字符值的整数值.(ASCII数字值).
因此,如果您要从文本中删除所有瑞典字母Ö:s(ASCII 214),您可以执行以下操作:
REPLACE("ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ", "Ö", "").
Run Code Online (Sandbox Code Playgroud)
要么
REPLACE("ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ", CHR(214), "").
Run Code Online (Sandbox Code Playgroud)
将它们组合在一起就可以构建一组不需要的字符并删除字符串中的所有字符.例如:
FUNCTION cleanString RETURNS CHARACTER (INPUT pcString AS CHARACTER):
DEFINE VARIABLE iUnwanted AS INTEGER NO-UNDO EXTENT 3.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
/* Remove all capital Swedish letters ÅÄÖ */
iUnwanted[1] = 197.
iUnwanted[2] = 196.
iUnwanted[3] = 214.
DO i = 1 TO EXTENT(iUnwanted):
IF iUnwanted[i] <> 0 THEN DO:
pcString = REPLACE(pcString, CHR(iUnwanted[i]), "").
END.
END.
RETURN pcString.
END.
DEFINE VARIABLE cString AS CHARACTER NO-UNDO INIT "AANÅÅÖÖBBCVCÄÄ".
DISPLAY cleanString(cString) FORMAT "x(10)".
Run Code Online (Sandbox Code Playgroud)
其他可能有用的功能:
SUBSTRING:返回字符串的一部分.也可以用来修改它.ASC:和CHR一样,但反过来 - 显示来自角色的ASCII值).INDEX:返回字符串中字符的位置.R-INDEX:像INDEX一样,但从右到左搜索.STRING:将任何数据类型的值转换为字符值.