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

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

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

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

Xcode

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

解決済

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

clover
clover

総合スコア20

CSV

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

Xcode

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

1回答

0評価

1クリップ

199閲覧

投稿2022/04/18 03:06

編集2022/04/19 02:50

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

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

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

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

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

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

Swift

import UIKit class highViewController: UIViewController { //問題番号と問題 @IBOutlet weak var quizNumberLabel: UILabel! @IBOutlet weak var quizTextView: UITextView! //ボタン番号 @IBOutlet weak var answerButton1: UIButton! @IBOutlet weak var answerButton2: UIButton! @IBOutlet weak var answerButton3: UIButton! @IBOutlet weak var answerButton4: UIButton! var csvArray: [String] = [] var quizArray: [String] = [] var quizCount = 0 override func viewDidLoad() { super.viewDidLoad() csvArray = loadCSV(fileName: "highquiz") print(csvArray) quizArray = csvArray[quizCount].components(separatedBy: ",") //第一問 問題とボタン各種 quizNumberLabel.text = "第\(quizCount + 1)問" quizTextView.text = quizArray[0] answerButton1.setTitle(quizArray[2], for: .normal) answerButton2.setTitle(quizArray[3], for: .normal) answerButton3.setTitle(quizArray[4], for: .normal) answerButton4.setTitle(quizArray[5], for: .normal) // Do any additional setup after loading the view. } @IBAction func btnAction(sender: UIButton){ if sender.tag == Int(quizArray[1]){ print("正解") } else { print("不正解") } nextQuiz() } func nextQuiz(){ quizCount += 1 if quizCount < csvArray.count { quizArray = csvArray[quizCount].components(separatedBy: ",") //第一問 問題とボタン各種 quizNumberLabel.text = "第\(quizCount + 1)問" quizTextView.text = quizArray[0] answerButton1.setTitle(quizArray[2], for: .normal) answerButton2.setTitle(quizArray[3], for: .normal) answerButton3.setTitle(quizArray[4], for: .normal) answerButton4.setTitle(quizArray[5], for: .normal) } else { performSegue(withIdentifier: "toScoreVC", sender: nil) } } func loadCSV(fileName: String) -> [String]{ let csvBundle = Bundle.main.path(forResource: fileName, ofType: "csv")! do{ let csvDate = try String(contentsOfFile: csvBundle, encoding: String.Encoding.utf8) let lineChange = csvDate.replacingOccurrences(of: "\r", with: "\n") csvArray = lineChange.components(separatedBy: "\n") csvArray.removeLast() } catch { print("エラー") } return csvArray // Do any additional setup after loading the view. } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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 文字です。)

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

CSV

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

Xcode

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