gpt4 book ai didi

rpgle - 将字符编码为 XML 的字符实体

转载 作者:行者123 更新时间:2023-12-01 09:22:30 27 4
gpt4 key购买 nike

我有一个变量定义为:

D content                     1280A   CONST 

我需要找到 " , & , ' , < , >字符并将它们替换为:

&quot; , &amp; , &apos; , &lt; , 和 &gt ;分别。

我见过该语言中的一些 XML 函数,但这些似乎不是我需要的。但我可能是错的,所以我在这里问。

使用 RPGLE,自由形式。

解决方案:也许不是很像 RPG,但它有效

P encode          B             
D PI 1280A
D content 1280A CONST
D outStr S 1280A
D strDsp S 50A
/free
outStr = %trim(content);
outStr = replaceAll('&' : '&amp;' : outStr);
outStr = replaceAll('"' : '&quot;' : outStr);
outStr = replaceAll('''' : '&apos;' : outStr);
outStr = replaceAll('>' : '&gt;' : outStr);
outStr = replaceAll('<' : '&lt;' : outStr);
return outStr;
/end-free
P E


P*** Procedure: replaceAll ************************************
P*** IN: character to replace, replacement text, source
P*** OUT: transformed string
P replaceAll B
D PI 1280A
D character 1A CONST
D rText 10A CONST
D content 1280A CONST
D outStr S 1280A
D dspStr S 50A
D rSize S 3P 0 //replacement text size
D index S 3P 0 //cur str index
D cntSize S 3P 0 //content size
/free
rSize = %len(%trim(rText));
cntSize = %len(%trim(content));
outStr = content;
for i = 1 to cntSize; //scan starts at character 1 not 0
index = %scan(character : outStr : i);
if index = 0;
leave;
endif;
outStr = %replace(%trim(rText) : outStr : index : 1);
i = index + 1;
endfor;
return outStr;
/end-free
P E

最佳答案

也许这是我的头脑简单,但是只使用内置的 %replace 函数就足够了吗?我的意思是,对于要替换的不同东西,你必须重复使用它。但是有没有那种打败盲目更换的特例呢? (例如,我在想人们经常通过无意识地打破逗号来尝试解析 CSV。这对于某些数据集来说效果不佳。)

关于rpgle - 将字符编码为 XML 的字符实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com