質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4812閲覧

CSVから読み込んだテキストを改行させたいです

meia

総合スコア26

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/13 09:00

編集2017/02/14 00:03

###前提・実現したいこと
swift3
xcode8です。
WindowsのExcelで作ったCSVからtextviewやlabelに文章を表示させる練習をしていて、そこでひとつわからないことがあります。

csvファイルを多次元配列に格納する方法は?
【Swift】CSVファイルを使ってデータの入出力を行う。
などを参考にしました。

swift

1//改行される 2textView.text = "今日は\nいい天気ですね" 3 4// CSV読み込み 5 if let csvPath = Bundle.main.path(forResource: "mainData", ofType: "csv") { 6 do { 7 var csvString = try NSString(contentsOfFile: csvPath, encoding: String.Encoding.shiftJIS.rawValue) as String 8 csvString = csvString.replacingOccurrences(of: "\r", with: "") 9 rowArray = csvString.components(separatedBy: "\n") 10 11 rowArray.forEach { 12 let items = $0.components(separatedBy: ",") 13 mainData.append(items) 14 } 15 } catch { 16 print(error) 17 } 18 19//配列の中に\nが入っていても改行されない 20textView.text = mainData[0][0] 21

###試したこと
ふつうにコード上で文章を作って改行させるときは、バックスラッシュとnをいれればいいということは分かったのですが、CSV上の文章にバックスラッシュとnをいれてもバックスラッシュとnが文章中に入るだけで改行されません。
(ここにバックスラッシュを入れると、なぜか¥になってしまうのでカタカナにしてあります。読みづらくてすいません・・・)

どうしてこうなるのかと、何をいれれば任意の箇所で改行させられるのかを教えていただきたいです。

関係あるかはわかりませんが、CSVをxcodeで読むと文字化けするので、encodeをshiftJISにしてます。

もし原因等をご存知の方がいらしたら、教えていただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/02/13 09:22

うまくいかないプログラムのコードを質問に追加してください。 コードが無いと適切なアドバイスが得られないと思います。
meia

2017/02/14 00:03

アドバイスありがとうございます!コードを追加しました!!
coco_bauer

2017/02/14 00:54

まず、csvファイルから読み出したデータをそのまま表示してみましょう。改行されますか? PCの種類やOSによって文字コードや改行のコードが異なります。linuxだと改行は"\n"ですが、Windowsだと"\r\n"です。 まず、csvの内容を確認すべきだと思います。
meia

2017/02/14 10:01

試しにエクセル側のAlt+Enterでセル内の文章を改行させたCSVを使って見ましたが、おそらく改行した部分で切られて読み枠がずれるせいか、Index out of rangeのエラーが出てしまいました。ちなみにCSVをxcodeから見てみると改行が含まれたセルは""でくくられていました。
guest

回答1

0

ベストアンサー

CSV上の文章にバックスラッシュとnをいれても

という処理が見当たらないのですが。

【追記】

あー、勘違いしてました。
質問のコードで\nを追加するわけじゃないんですね。

csvString.components(separatedBy: "\n")

\nで分割していますが、その時点で\nは無くなりますよ。

投稿2017/02/14 01:01

編集2017/02/14 01:04
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meia

2017/02/14 10:07

早速回答ありがとうございます! そうだったんですね!バックスラッシュとnが使えないとなると、何を使えば文章を改行させられるでしょうか・・・
fuzzball

2017/02/14 10:19

分割したあとで\nを付け足せばいいのでは?
meia

2017/02/14 13:02

testText.text = testText.text.replacingOccurrences(of: " ", with: "\n ") なるほど! ちょっと違うかもしれませんが、全角スペースを目印がわりにしたらできました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問