Progress 4gl 正在从字符串中删除所有特殊字符4GL
如何从正在进行4GL的字符串中删除所有特殊字符?我想这取决于您对特殊字符的定义 您可以使用Progress 4gl 正在从字符串中删除所有特殊字符4GL,progress-4gl,openedge,Progress 4gl,Openedge,如何从正在进行4GL的字符串中删除所有特殊字符?我想这取决于您对特殊字符的定义 您可以使用REPLACE删除任何字符。只需将replace的to字符串部分设置为空(“”) 语法: 替换(源字符串、从字符串到字符串) 例如: DEFINE VARIABLE cOldString AS CHARACTER NO-UNDO. DEFINE VARIABLE cNewString AS CHARACTER NO-UNDO. cOldString = "ABC123AACCC". cNewSt
REPLACE
删除任何字符。只需将replace的to字符串部分设置为空(“”)
语法:
替换(源字符串、从字符串到字符串)
例如:
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)".
可以使用“替换”删除完整的匹配字符串。例如:
REPLACE("This is a text with HTML entity &", "&", "").
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)".
处理“特殊字符”有多种方法。如果您指的是特殊的“ASCII”字符,如换行符、bell等,则可以将REPLACE与CHR函数一起使用
基本语法(您也可以添加一些关于代码页的信息,但这很少需要):
CHR(表达式)
表达式:生成要转换为字符值的整数值的表达式。(ASCII数字值)
因此,如果要从文本中删除所有瑞典语字母Ö:s(ASCII 214),可以执行以下操作:
REPLACE("ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ", "Ö", "").
或
把这些放在一起,您可以构建一个不需要的字符数组,并删除字符串中的所有字符。例如:
REPLACE("This is a text with HTML entity &", "&", "").
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)".
函数cleanString返回字符(输入pcString作为字符):
将变量iUnwanted定义为整数NO-UNDO区段3。
将变量i定义为整数NO-UNDO。
/*删除所有大写瑞典语字母ÄÄÖ*/
我希望[1]=197。
我希望[2]=196。
我希望[3]=214。
i=1到一定程度(IUN期望值):
如果IUN期望[i]0,则执行以下操作:
pcString=REPLACE(pcString,CHR(iUnwanted[i]),“”)。
结束。
结束。
返回pcString。
结束。
将变量cString定义为字符NO-UNDO INIT“AANÅÅÖBBCVCÄÄ”。
显示干净字符串(cString)格式“x(10)”。
其他可能有用的功能:
:返回字符串的一部分。也可以用来修改它子字符串
:与CHR类似,但与之相反-显示字符的ASCII值)ASC
:返回字符串中字符的位置索引
:与索引相似,但从右向左搜索R-INDEX
:将任何数据类型的值转换为字符值STRING
function Dia2Plain returns character (input icTxt as character):
define variable ocTxt as character no-undo.
define variable i as integer no-undo.
define variable iAsc as integer no-undo.
define variable cDia as character no-undo.
define variable cPlain as character no-undo.
assign ocTxt = icTxt.
repeat i = 1 to length(ocTxt):
assign cDia = substring(ocTxt,i,1)
cPlain = "".
if asc(cDia) > 127
then do:
repeat iAsc = 65 to 90: /* A..Z */
if compare(cDia, "eq" , chr(iAsc), "case-sensitive")
then assign cPlain = chr(iAsc).
end.
repeat iAsc = 97 to 122: /* a..z */
if compare(cDia, "eq" , chr(iAsc), "case-sensitive")
then assign cPlain = chr(iAsc).
end.
if cPlain <> ""
then assign substring(ocTxt,i,1) = cPlain.
end.
end.
return ocTxt.
end.
/* testing */
def var c as char init "ÄëÉÖìÇ".
disp c Dia2Plain(c).
def var i as int.
def var d as char.
repeat i = 128 to 256:
assign c = chr(i) d = Dia2Plain(chr(i)).
if asc(c) <> asc(d) then disp i c d.
end.
函数Dia2Plain返回字符(输入icTxt作为字符):
将变量ocTxt定义为无撤消字符。
将变量i定义为不撤消的整数。
将变量iAsc定义为不撤消的整数。
将变量cDia定义为无撤消字符。
将变量cPlain定义为字符no undo。
分配ocTxt=icTxt。
重复i=1到长度(八位文本):
分配cDia=子字符串(八位文本,i,1)
cPlain=”“。
如果asc(cDia)>127
然后做:
重复iAsc=65至90:/*A..Z*/
如果比较(cDia,“eq”,chr(iAsc),“区分大小写”)
然后分配cPlain=chr(iAsc)。
结束。
重复iAsc=97至122:/*a..z*/
如果比较(cDia,“eq”,chr(iAsc),“区分大小写”)
然后分配cPlain=chr(iAsc)。
结束。
如果cPlain“
然后分配子字符串(ocTxt,i,1)=cPlain。
结束。
结束。
返回八位文本。
结束。
/*测试*/
将变量c定义为char init“Äëëëëëëëëëëë235。
disp c Dia2Plain(c)。
定义变量i为int。
将变量d定义为char。
重复i=128至256:
分配c=chr(i)d=Dia2Plain(chr(i))。
如果asc(c)asc(d),则显示i c d。
结束。
谢谢您的回答。我想为您提供一个例子来帮助我:do:def var namecust as char。def var namecustnew为char。namecust=bryan&Jérôme caron/pers/*我想通过替换namecust&Eo-/space ie://namecustnew=BRYAN JEROME CARON PERS来显示变量。消息名称CUSTNEW VIEW-AS ALERT-BOX INFO按钮确定。end.newstring=REPLACE(“Jérôme”、“e”、“e”)。newstring=REPLACE(newstring,“ô”,“o”)。尽管该函数在可维护性方面更干净,但也可以嵌套REPLACE调用,如:newstring=REPLACE(REPLACE(“'Jérôme”,“é”,“e”),“ô”,“o”)。