与えられた文字列内の XML エスケープ文字をエスケープ解除する必要があるとします。たとえば、、 、 などと置き換える&
必要があります。純粋に機能的なソリューションが望ましいと思います。&
"
"
<
<
でそれを行うのは理にかなっていscalaz.Zipper
ますか?Zipper
フォーカスの右側にある文字を確認し、前方に移動しながらそれらをスキップできます。やり過ぎじゃない?もっと簡単な解決策を提案しますか?
Zipper
は、文字列内の文字数を変更するマッピングではなく、どちらかの側の文字にアクセスする必要がある 1:1 の文字間マッピングを処理するのに適しています。
XML 解析ライブラリ (scala には scala-xml の形式で妥当なビルトインっぽいライブラリがあります)、文字列エスケープ/エスケープ解除ユーティリティ関数 (xml エンティティ IIRC を処理する apache commons にあります) を使用することをお勧めします。本当に凝った解決策が必要な場合は、scala-parser-combinators を使用して文字列を解析することをお勧めします。