バックスラッシュ(円マーク)を置換する方法はありますか?

300 views
Skip to first unread message

清水@Anthnet

unread,
Aug 3, 2023, 10:37:59 PM8/3/23
to Japan RAD Studio User Group
清水@アンソネットです。

delphixe7で開発してるのですが
あるサービスを提供しているサイトから
jsonファイルをダウンロードして
そのダウンロードしたjsonファイルの値に
\がエスケープ処理されずに単独で入っている為
(サービスを提供している企業に確認しましたが対処する予定はなく、
仕様ですとのこと。
他の"や改行は\",\nで処理してきます)

上記理由でプログラムで対処しようとしましたが
m_str:=StringReplace(m_str, '\', '\\', [rfReplaceAll]);
これだと上手く処理をしきれないようです。

どうにか処理する方法があれば教えていただけますでしょうか。
よろしくお願いします。


Tarou Takagi, Imageom

unread,
Aug 3, 2023, 10:55:06 PM8/3/23
to radstu...@googlegroups.com
こんにちは、イマジオムの高木です。 いつもお世話になっております。

アンソネット 清水さん:
 単独の'\'だけを'\\'に置換し、エスケープシーケンスとして
使われている'\'は置換しないようにしたいというお尋ねかと
見受けました。

 そのような場合私は、ちょっとスマートではないのですが、
次のように実装したことがあります。

m_str:=StringReplace(m_str, '\' , '\\', [rfReplaceAll]);

m_str:=StringReplace(m_str, '\\n', '\n', [rfReplaceAll]);
m_str:=StringReplace(m_str, '\\t', '\t', [rfReplaceAll]);
  :
m_str:=StringReplace(m_str, '\\"', '\"', [rfReplaceAll]);

要するにいったん全部の'\'を'\\'に変えた上、もともとエスケープ
シーケンスになっていたものだけをもとに戻すという手口です。
ご参考になればと思います。

 ただ単独の'\'だけをエスケープさせないという「仕様」には、
非常に大きな問題があるように思います。
――――――――――――――――――――――――――――――――――――
カメラシステム/ソフトウェア開発/ハードウェア製作/仕組みづくり
多彩な手段でものづくり現場の課題を解決
――――――――――――――――――――――――――――――――――――
株式会社イマジオム 代表取締役 高木太郎
〒316-0024 茨城県 日立市 水木町 1-11-10
電話:0294-28-0147
ファクシミリ:0294-28-0148
携帯電話:090-8177-5709
メール:tarou_...@imageom.co.jp
ウェブサイト:
  (会社公式)https://www.imageom.co.jp/
  (イマジオム・アウトレット)https://www.imageom-outlet.shop/

清水@Anthnet

unread,
Aug 4, 2023, 3:23:17 AM8/4/23
to Japan RAD Studio User Group
清水@アンソネットです。

イマジオムの高木さん、回答ありがとうございます。

何度かテストしていくうちにどうやらサイトから持ってくるJSONファイルの
¥(半角円マーク)がUTF8の0xC2A5だったようです。
そこが原因で全て間違った対処をしようとしていたようです。

ぱっと見、気が付きませんって。
提供側がもうちょっと正確に回答してほしかったですね。

お手数をおかけしました。
申し訳ありません。
ありがとうございました。

2023年8月4日金曜日 11:55:06 UTC+9 Tarou Takagi, Imageom:

Tarou Takagi, Imageom

unread,
Aug 4, 2023, 3:35:32 AM8/4/23
to radstu...@googlegroups.com
こんにちは、イマジオムの高木です。 いつもお世話になっております。

アンソネット 清水さん:
> 何度かテストしていくうちにどうやらサイトから持ってくる
> JSONファイルの¥(半角円マーク)がUTF8の0xC2A5だったようです。
> そこが原因で全て間違った対処をしようとしていたようです。
>
> ぱっと見、気が付きませんって。
> 提供側がもうちょっと正確に回答してほしかったですね。

 そういうことでしたか。 それはまた紛らわしい「仕様」でしたね。
ともあれ、解決して何よりでした。
Reply all
Reply to author
Forward
0 new messages