1

週末は個人的なプロジェクトに取り組んでいましたが、ここで立ち往生しました。基本的に回す必要がある

[0;37m[33m o0=============================~o[0]o~======」 ========================0o

の中へ

o0============================~o[0]o~=========== ==================0o (このテキストのみが黄色になります)

ココアの正規表現機能を使用して、「[0;」、「37m」、「[33m」を個別に見つけてキャプチャすることができました。「0;」以前のテキスト スタイルを削除し、黒の背景と白のテキストである既定値に戻すことをサーバーが望んでいることを示します。「37m」は、サーバーがテキストを白くしたいことを示しています (なぜこれがここにあるのかわかりませんが、これはサーバーが送信するものです)。最後の「33m」は、サーバーがテキストを黄色にしたいことを示しています。私のコードは、文字列で要求された色の変更を正しく検出、削除、および識別しますが、作成した NSAttributedString にこれらの色を適用するのに問題があります。正規表現検索によって提供される範囲は、最終的な文字列の色のシーケンスを取り除くと無効になります。ストリップされた文字列のどこに色の変更を適用する必要があるかを把握する効果的な方法は何ですか? この例では、すべてのカラー コードが最初に指定されていますが、それ以外の場合は、カラー コードが中間にあり、文字列の色が途中で変わる可能性があります。NSAttributedString は、要求された色を割り当てる適切な範囲を把握できれば、これを処理できます。

4

1 に答える 1

0

ライオンが出たので、答えを投稿できます。基本的に、Lion の派手な正規表現機能を使用して、何が起きているかを把握できます。これを行うコード (リファクタリングが必要ですが、少なくとも機能します) は次の場所にあります。

https://github.com/sgoodwin/Turbo-Mud/blob/experiment/Turbo%20Mud/Turbo_MudAppDelegate.m

于 2011-08-11T22:01:23.993 に答える