

componentsSeparatedByString:を使って、改行コードでパースしようとしましたが、一つのパターンでしか対応出来ませんでした。
例えば、WindowsなどのExcelのcsvファイルを読み込もうとした場合、そのファイルの改行コードは、"\n" or "\n\r" or "\r" などのパターンがあり、それらのパターンを対応させる方法が見出せません。
どの様な方法でなら、実現出来るのでしょうか?
因みに、現在のコードを抽出すると
NSString*parsedString;
parsedString = [[parsedString componentsSeparatedByString:@"\r"] objectAtIndex:0];
このようなコードで、文字列の最後尾の改行コードを除去しております。
No.5ベストアンサー
- 回答日時:
文字列の末尾の改行コードを取る事が目的であれば、こんな感じでしょうか。
unichar c = [parsedString characterAtIndex:[parsedString length]-1];
if(cが改行コード){
NSString* newStr = [parsedString substringToIndex:[parsedString length]-1];
}
ifの中の判定はいくつかある改行コードそれぞれにマッチするか調べて下さい。
cr+lfと2バイトの改行コードの場合にも対応する場合は、末尾2文字分を調べれば良いでしょう。
ちなみに、C言語では文字列リテラル中の「\n」がどのコードに展開されるかは処理系によります。
Unix系ではlfに、DOS系ではcr+lfに展開される場合が多いようです。
なので、今回のような場合の改行コードの判定には16進数で記述するとうまく行くのではないでしょうか。(ただ、Objective-Cではまた状況が異なるかもしれません。)
No.4
- 回答日時:
改行コードの変換は必要ないです。
先ほど紹介したサイトHMDTの「1 行づつ substring を取り出す」によると、NSStringクラスのsubstringWithRange:メソッドで、どの改行コードにも対応してくれるみたいですよ。
このサンプルコードでほぼ目的は達成出来ると思います。
ご回答、ありがとうございます。
このサイトは、参考にしました。
確かに、「1 行づつ substring を取り出す」事は出来ますが、文字列の最後尾には「取り出した時の文字コードの状態」がパースされずに出力されます。仕方ないので、
parsedString = [[parsedString componentsSeparatedByString:@"\r"] objectAtIndex:0];
としました。
説明不足でした。スミマセン。
No.3
- 回答日時:
改めて調べたら、こんな情報がありました。
(参考URLを参照)> 多分、改行コードを調べる方法ですと、処理時間が掛かりますので
んー、そんなにかかりますか?
少なくともnkfで処理するよりは、少ない時間ですむはずですよ。
また、nkfは標準では入ってないので別途インストールする必要もあります。
参考までに、NSStringにおける改行コードの扱いに関して以下のような情報がありました。
http://www.drycarbon.com/marimo/index.rb?room=dr …
参考URL:http://homepage.mac.com/mkino2/cocoaProg/Foundat …
お手間を掛けまして、スミマセン。
参考URLを、読みました。
参考URLにも書いてありましたが、「テキスト読み込み時に全ての改行をLFに変換し、ユーザによる入力も逐次LFに変換して対処している。」と云う事から、どうやら、文字列をパースする前にNSDataなどで改行コードの解析を行う必要がありそうですね。nkf擬きを、作る事になるのかぁ・・・・・。
nkfに関しては、「標準では入ってない」と云う事を見落としてました。失礼しました。
No.2
- 回答日時:
1回のcomponentsSeparatedByString: 送信ですべての改行コードに対応したいと言う事でしょうか。
このメソッドではseparatorに1つの文字列しか指定出来ないので、そのままでは出来ません。
改行コードの混在がないという前提条件があれば、文字列をパースして最初の改行コードを調べ、それをseparatorに指定すれば良いでしょう。
混在する場合も分割したい場合は、今回調べた限りでは該当するメソッドがなかったので、自分で分割するしかないような気がします。
ご回答、ありがとうございました。
> 1回のcomponentsSeparatedByString: 送信ですべての改行コードに対応したいと言う事でしょうか。
いいえ。改行コードの混在はなく、改行コードの種類が多岐にわたる場合の質問でした。
そういった意味では、simi5さんの回答は、的を射ているかもしれません。唯、もう少し詳しく説明して頂ければ、幸いに思います。
多分、改行コードを調べる方法ですと、処理時間が掛かりますので、error発生時にはLinux系で使うシステム命令で
system(nkf -unix org.csv temp.csv); ← (使えるかは、不明)
として、文字列を置き換えた方が有効なのでしょうか?
No.1
- 回答日時:
この回答への補足
例え話に関してですが、例え悪かったかもしれませんので、違う言い方にします。
テキストファイルのフォーマットに於いての改行コードは幾つかあり、"CR+LF","CR","LF"等があると思います。それらを対応させる方法を、教えて下さい。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- 作詞・作曲 或る曲の楽譜のコード進行の中に"F onA"なるものがありました。これはどんな和音ですか? 7 2023/05/22 00:34
- その他(Microsoft Office) エクセルで1行の長いデータを指定の桁数で分割する方法が知りたいです。 4 2022/05/20 21:55
- その他(プログラミング・Web制作) 改行コードについて 4 2022/08/13 14:20
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
文章のはじめに「 > 」を付ける
-
ホームページの転送 (SFTP, SCP...
-
改行のことで
-
VBAでCSVをExcelに取り込む時に...
-
改行について
-
アプリケーションから新規メー...
-
HDMLの<CENTER>に...
-
preg_replaceで連続した改行
-
ファイルの内容をstrcpyを使っ...
-
Google Chromeでの改行ができない
-
CSV出力時の改行コードについて
-
VBAのコンボについて
-
ファイルの読み込みについて
-
エディットコントロールの改行
-
XmlTextWriterで改行、RichText...
-
キャリッジリターンとラインフ...
-
文字を改行<Visual Basic 6.0>
-
DelphiのTMemoのテキスト末尾の...
-
VBSのADODB.Streamで先頭に「追...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
VBAでCSVをExcelに取り込む時に...
-
改行について
-
改行を読み飛ばす
-
テキストボックス行の桁数を制...
-
C# DataGridViewのセルを改行禁...
-
LaTeX: captionの中で改行した...
-
JAVA System.out.println の ...
-
エクセルVBA 文字列領域が不足...
-
最終行の改行について
-
グレープシティのSPREAD...
-
【VBA】エクセルで最後の不要な...
-
jsp 改行コードで改行させて表...
-
ラベル(スタティックテキスト)...
-
1行ごとに取得して、その改行...
-
ファイルから読み取った改行文...
-
JavaDoc コメントの改行について
おすすめ情報