以下のようなコードスニペットがあります(前述のスタックオーバーフローの回答... Deleting all special characters from a string in progress 4GL)。私は拡張された文字を受け入れない顧客のシステムにそれを送るかもしれません。Progress/OpenEdgeの文字列からすべての特殊文字を削除すると奇妙な結果が発生する
V-INT = 128〜255の操作を行います。
assign v-string = replace(v-string,chr(v-int),"").
終わりを。
これは1つの例外を除いて完全に動作しています(これは私が捕まえていない他のものがあるかもしれないことを私に恐れさせる)。 255になると、文字列中のすべての 'y'が置換されます。
私は、次の...
表示CHRを行う場合(255)= CHR(121)。/* 121はyのアスキーコード*/
結果として真になります。
そのため、私がしなければ、次の...
表示置き換える( "これは本当に奇妙である"、CHR(255)、 "")。
私は、次のような結果を得る:
:これは私が 'Y' は、以下を実行して、影響を受けた唯一の文字であることを確認した奇妙な
reallある
を
def var v-stringをchar init "abcdefghijklmnopqrstuvwxyz"として指定します。 def var v-intをintとして指定します。
V-INT = 128〜255の操作を行います。
アサインV-文字列を=(V-文字列、CHRを(V-INT)、 "")に置き換えます。
end。
ディスプレイのvストリング。以下になり
:
abcdefghijklmnopqrstuvwxz
私は範囲から255を除去することによって、この問題を解決することができます知っているが、私はこれが起こっている理由を理解したいと思います。
これは文字の照合セットの問題ですか、それとももっと簡単なものがありますか?
ありがとうございました!
ありがとうございます!それがまさに私が必要としていたものです。 –
問題ありません。しかしupvoteを好む! :) – Jensd
私はupvoteをしようとしたが、私は新しい登録者であるので、それは私を許さなかった。 : –