2011-11-15 4 views
1

標準のテキストファイルからテキストを解析するCocoaアプリケーションがあります。ファイルを編集するためにnanoやpicoのような端末プログラムを使用すると、時々^Mという文字が表示されます。 Mac OS Xのそれ以降のバージョンではこれを再現することはできませんが、バージョン10.5にはたくさんあるようです。^M文字を解析する

奇妙なことに、私が^M文字を10.5システムから取り込んだ場合、それは魔法のように10.6+になります。 Mac OSはLinuxスタイルの改行をMacスタイルに変換し始めたからです(??)。したがって、10.7にXCodeだけがインストールされているので、デバッグ時に問題を解決するのがやや複雑になっています。

^M文字を見つけて、それをファイルの解析中にもっと標準的なもの(\nなど)に置き換える方法が必要です。どのような種類のキャラクターを探す必要がありますか?それは\ nと思われませんし、同様に、\ r \ nの組み合わせもそのトリックをやっているようです。 ^Mは依然としてハングアップします。

答えて

0

^MはDOS/Windowsの標準の復帰文字です。

私はdos2unixプログラムを使用してそれらをすべて削除します。

+0

コードで実行する方法はありませんか? – bugfixr

+1

ああ。私はあなたが単に "\ r"を ""と置き換える必要があると思います。 "\ r"を削除する – JohnnyK

1

これはXCodeで管理しやすいです。

行末を変更するファイルを選択し、ユーティリティパネルを開くだけで行末を変更することができます。そのよう

enter image description here

+1

実行時にこれを行う必要があります。アプリを実行している人の中にはnanoを使ってファイルを編集してから、Dosスタイルの改行で終わるものがあります。私は本当に私に自分のファイルをメールしてもらうように頼むことはできません...;)objective-cを使ってこれを行う方法はありますか? – bugfixr

1

私は、一般的には、MacOSのユーザーではないので、私はこれだけで動作します推測しています。典型的なUnixライクなシステムでは、Ctrl-Vを使用して、入力した次の制御文字を取得して、表示可能な文字シーケンスとして表示することができます。たとえば、Ctrl-Vと入力してReturnキーを押すことで、表示したい^ Mを得ることができます。この場合、画面に表示される^ Mは、^文字とM文字を最初に入力したときに表示される^ Mと同じではありません(ソフトウェアの観点から)。このようにして、正規表現を使って^ M制御文字表現を\ nのインスタンスに置き換えるなどの作業を行うことができます。

また、Jakrabbitが示唆しているように、dos2unixを使ってファイルをフィルタリングすることもできます。

1

"^ M"は、ASCII改行文字の表現です。これはASCII(およびUTF-8)の文字コード13なので、ファイルを解析するときは、値が13の文字を探し、無視します。