【Apex】改行コードがreplaceで置換できない。

Salesforce

改行コードがreplaceで置換できない。
このキーワードでハマっている人は、もしかすると、こんな感じで置換しようとしている処理を

str.replace(‘\n’, ”);

こうすると上手くいくかもしれません。

str.replace(‘\\n’, ”);

もし上手くいったなら、以下の勘違いをしている可能性あります。

そもそも置換しようとしていたのは改行コードではない

あなたが置換しようとしていたのは改行コード(\n)ではなく、”\n”という文字列です。

String型で”\n”は改行コードとして扱われるため、”\n”を文字列として認識させるには”\\n”と書いてあげる必要があります。エスケープというやつです。

引用符で囲まれた文字列のエスケープシーケンス

ソースでいうとこんな感じです。

実行結果:
01:35:19:013 USER_DEBUG [25]|DEBUG|改行
01:35:19:000 USER_DEBUG だよ
01:35:19:013 USER_DEBUG [26]|DEBUG|改行\nだよ

例えばカスタム表示ラベルで”\n”を含んでいると、それは改行コードではなくて”\n”という文字列として認識されるため、Apexで参照した時は”\\n”の扱いとなります。

これを replace(‘\n’, ”) で置換しようとしても上手くいかない訳です。

言われてみればそうなのですが、なんかちょっとハマってしまいました。

コメント

タイトルとURLをコピーしました