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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Xcode

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

Q&A

解決済

1回答

728閲覧

csvファイルで書いて出力する文字を改行して表示するには?

clover

総合スコア20

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Xcode

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

0グッド

1クリップ

投稿2022/04/18 03:06

編集2022/04/18 04:27

練習でクイズアプリを作成しています。

Rikuto Satoさんという方の動画を参考に作っています。
【総集編】【Swift/Xcode入門】クイズアプリ開発講座~ 1時間半でクイズアプリを開発しよう ~

動画内のPart3の内容を自分も実際に作ったのですが赤枠(他2つも同様)の所が中途半端な所で改行が入ってしまいとても気になっています。やりたい事は青枠のように改行?させる事です。

csvファイルを書くときにその中で改行のコマンド(?)を書いたりするのかと思い調べてはみたのですがそれらしい方法を見つけることができませんでした。

[実際の問題画面]
実際の問題画面
[csvファイルの画面]
csvファイル

[問題出力のコード(動画内のものを丸々使用)]

Swift

1import UIKit 2 3class highViewController: UIViewController { 4 5//問題番号と問題 6 @IBOutlet weak var quizNumberLabel: UILabel! 7 @IBOutlet weak var quizTextView: UITextView! 8//ボタン番号 9 @IBOutlet weak var answerButton1: UIButton! 10 @IBOutlet weak var answerButton2: UIButton! 11 @IBOutlet weak var answerButton3: UIButton! 12 @IBOutlet weak var answerButton4: UIButton! 13 14 15 var csvArray: [String] = [] 16 var quizArray: [String] = [] 17 var quizCount = 0 18 19 20 override func viewDidLoad() { 21 super.viewDidLoad() 22 23 24 csvArray = loadCSV(fileName: "highquiz") 25 print(csvArray) 26 27 quizArray = csvArray[quizCount].components(separatedBy: ",") 28 29//第一問 問題とボタン各種 30 quizNumberLabel.text = "第\(quizCount + 1)問" 31 quizTextView.text = quizArray[0] 32 answerButton1.setTitle(quizArray[2], for: .normal) 33 answerButton2.setTitle(quizArray[3], for: .normal) 34 answerButton3.setTitle(quizArray[4], for: .normal) 35 answerButton4.setTitle(quizArray[5], for: .normal) 36 37 38 // Do any additional setup after loading the view. 39 40 } 41 @IBAction func btnAction(sender: UIButton){ 42 if sender.tag == Int(quizArray[1]){ 43 print("正解") 44 } else { 45 print("不正解") 46 } 47 nextQuiz() 48 } 49 50 func nextQuiz(){ 51 quizCount += 1 52 if quizCount < csvArray.count { 53 quizArray = csvArray[quizCount].components(separatedBy: ",") 54 55 //第一問 問題とボタン各種 56 quizNumberLabel.text = "第\(quizCount + 1)問" 57 quizTextView.text = quizArray[0] 58 answerButton1.setTitle(quizArray[2], for: .normal) 59 answerButton2.setTitle(quizArray[3], for: .normal) 60 answerButton3.setTitle(quizArray[4], for: .normal) 61 answerButton4.setTitle(quizArray[5], for: .normal) 62 63 64 } else { 65 performSegue(withIdentifier: "toScoreVC", sender: nil) 66 } 67 } 68 69 70 func loadCSV(fileName: String) -> [String]{ 71 let csvBundle = Bundle.main.path(forResource: fileName, ofType: "csv")! 72 do{ 73 let csvDate = try String(contentsOfFile: csvBundle, encoding: String.Encoding.utf8) 74 let lineChange = csvDate.replacingOccurrences(of: "\r", with: "\n") 75 csvArray = lineChange.components(separatedBy: "\n") 76 csvArray.removeLast() 77 } catch { 78 print("エラー") 79 } 80 return csvArray 81 82 83 // Do any additional setup after loading the view. 84 } 85 86 87} 88

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

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

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

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

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

hoshi-takanori

2022/04/18 03:45

改行したいところに改行コード (\n) を入れれば良いのですが、問題は csv を読み込むときに改行で区切ってるので…。
clover

2022/04/18 04:25

\nを入れることもやってはみてたんですがそのまま\nが表示されるだけでした、、、
5ugarVVatch1ng

2022/04/18 06:23

printでコンソールに表示させても\nが表示されますか?
clover

2022/04/18 07:10

\nを追加した状態で実際に動かしてみてみましたが\nが表示されていました。
clover

2022/04/18 07:32

はい。optionキー+¥キーで入力しています。
5ugarVVatch1ng

2022/04/18 07:39

print("ほげ\nほげ")は改行されて表示されますか? ついでにsetTitleでも試してもらいたいです。
clover

2022/04/18 09:00

改行して表示されてなかったと思います。 わかりました。あとすみません。setTitleのがどこにあるのか教えてもらえますか?すみません、、
5ugarVVatch1ng

2022/04/18 09:06

answerButton1.setTitleのことです。
5ugarVVatch1ng

2022/04/18 09:09

print("ほげ\nほげ")が改行されないのは謎ですね。
clover

2022/04/18 09:34

んー、今回は開業などはなしでそのまま行きます。5ugarVVatch1ngさん最後まで丁寧に教えていただきありがとうございます。
hoshi-takanori

2022/04/18 17:50

あ、えっと、本物の改行と、改行を表すのによく使われる文字の並び (\ と n の 2 文字) の混乱があるようです。 csv の中に本物の改行を入れてしまうと、そこで別の行になってしまうので、代わりに \n と記述して、読み込むときにはそれを本物の改行に置き換えると良いのでは。 (print("ほげ\nほげ") の場合、コンパイル時に \n が本物の改行に置き換わりますが、csv の中に \n と書いても、それは \ と n の 2 文字です。)
guest

回答1

0

自己解決

今回は改行せずそのまま行くことにします。

投稿2022/04/18 09:35

clover

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問