gpt4 book ai didi

progress-4gl - 从 Progress/OpenEdge 中的字符串中删除所有特殊字符时出现奇怪的结果

转载 作者:行者123 更新时间:2023-12-04 05:07:15 26 4
gpt4 key购买 nike

我有下面的代码片段(如之前的 Stack Overflow 回答... Deleting all special characters from a string in progress 4GL 中所建议),它试图从字符串中删除所有扩展字符,以便我可以将其传输到不接受任何扩展字符的客户系统.

do v-int = 128 to 255:

  assign v-string = replace(v-string,chr(v-int),"").

end.



它完美运行,只有一个异常(exception)(这让我担心可能还有其他我没有捕获)。当它达到 255 时,它将替换字符串中的所有 'y'。

如果我做以下...

display chr(255) = chr(121). /* 121 is asc code of y */



结果我是真的。

因此,如果我执行以下操作...

display replace("This is really strange",chr(255),"").



我得到以下结果:

This is reall strange



我已经验证 'y' 是唯一受运行以下命令影响的字符:

def var v-string as char init "abcdefghijklmnopqrstuvwxyz". def var v-int as int.

do v-int = 128 to 255:

assign v-string = replace(v-string,chr(v-int),"").

end.

display v-string.



结果如下:

abcdefghijklmnopqrstuvwxz



我知道我可以通过从范围中删除 255 来解决这个问题,但我想了解为什么会发生这种情况。

这是字符整理集问题还是我错过了更简单的东西?

谢谢你的帮助!

最佳答案

这是一个错误。这是一篇关于它的 Progress 知识库文章:

http://knowledgebase.progress.com/articles/Article/000046181

解决方法是在 CHR() 中指定代码页声明,像这样:

CHR(255, "UTF-8", "1252")

这是在您的示例中:
def var v-string as char init "abcdefghijklmnopqrstuvwxyz". def var v-int as int.

do v-int = 128 to 255:

assign v-string = replace(v-string, chr(v-int, "UTF-8", "1252"), "").

end.

display v-string.

您现在应该在输出中看到“y”。

关于progress-4gl - 从 Progress/OpenEdge 中的字符串中删除所有特殊字符时出现奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42931974/

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