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

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

ただいまの
回答率

90.52%

  • C#

    7080questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

テキストから\nを読み込んでも改行されない

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 225

DJR-tech

score 2

 前提・実現したいこと

はじめまして。C#でゲームを作っています。

テキストから文字を読み込んで画面に表示しようとしています。
テキストに記述してある\nが改行として反映されず、そのまま"\n"と表示されてしまいます。
どうしてこのようになってしまうのかご存知の方教えていただければ幸いです。

テキスト: 1ああ。あああああ\nあああああ

 public class textLoad   
    {

        Queue<string> que = new Queue<string>();

        public textLoad()
        {
            StreamReader stream = new StreamReader("Resource/text/stage1.txt", Encoding.GetEncoding("Shift_JIS"));

            string line;

            while ((line=stream.ReadLine()) != null) // 1行ずつ読み出し。
            {
                que.Enqueue(line);
            }
        }



        public string[] LOAD()
        {

            string[] str=new string[que.Count];

            for (int i = 0; i < que.Count; i++)
            {
                str = que.ToArray();
            }              

            return str;

        }
}

class Program
{
 [STAThread]

        static void Main(string[] args)
        {
            string[] str=new string[20];

            textLoad text = new textLoad();

            str =text.LOAD();

            Lkaiwa.AddObject(new Conversation(str[1]));

        }
}

}

 試したこと

Encoding.GetEncoding()の引数を"utf-8"にしてみましたが改善しませんでした。

 補足情報(FW/ツールのバージョンなど)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

テキストからの読込みってことですね。
これは、'\' という文字と 'n' という 2文字になります。
プログラムのコード中に書いた場合は、コンパイラが、'\n' を一文字として 改行コードに変換します。
テキスト中の"\n" を改行としたい場合は、自分で変換する必要があります。
もっとも、バイナリとして読み込めば、行末の 改行コードは、改行('\n') として認識されます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 23:07

    はい。おっしゃるとおりテキストからの読込みです。

    >'\' という文字と 'n' という 2文字になります。
     よくわかりました。文字2文字で出力されるというのも理解できました。

    >テキスト中の"\n" を改行としたい場合は、自分で変換する必要があります。
     変換方法について教えていただけないでしょうか?

     if (line.Contains("\n")) line.Replace("\n", Environment.NewLine);

     としてみたのですが、改善されませんでした。

    キャンセル

  • 2018/07/05 23:13

    > Contains("\n")
    ここは、ソースコード内なので、 Contains(@"\n") とすべきでしょう。
    または、Contains("\\n")

    キャンセル

  • 2018/07/05 23:51

    勘違いしている部分を指摘して頂き理解することができました。どうもありがとうございました。

    キャンセル

0

そのテキストファイルの内容を提示してください

テキストに@"\n"と記述してあるんでしょうか。
そうであるならそう表示されて当然です

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 23:12

    ------------------------------------------
    寒い。もっと着てくれ\nばよかった。
    ------------------------------------------
    このようになっています。\とnが別々の文字として扱われている故に改行されないということでしょうか?

    キャンセル

0

どうしてと言われても、\nという文字を出力すれば\nと表示されるのは当然です。

プログラムの中の文字列の中で、"\n"等と書くと、コンパイラが\nという文字を改行文字に変換してくれるのを知らずに、\nという文字で改行していると勘違いしているのでしょう。
改行したければ、
・読み込むファイルに改行文字を入れる
・プログラムで読み込んだ文字列の\nという文字を改行文字に自分で置換してから出力する
のどちらかです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 22:57

    > ・読み込むファイルに改行文字を入れる
    StreamReader.ReadLine()では行単位なので、無理ですね。
    ReadBlock() 辺りなら、 OKか? 最近、使ってないのでちょっと自信が無い。

    キャンセル

  • 2018/07/05 23:15

    ご回答ありがとうございます。

    >プログラムの中の文字列の中で、"\n"等と書くと、コンパイラが\nという文字を改行文字に変換してくれるのを知らずに、\nという文字で改行していると勘違いしているのでしょう。
     そう思っていました。皆様のおかげで違いがわかりました。

    ------------------------------------
    寒い。もっと着てくれ\nばよかった。
    君は冬の山を知ってい\nるな。
    -------------------------------------
    読み込むファイル(テキストファイル)はこのようになっています。

    >・読み込むファイルに改行文字を入れる
    この方法について教えていただけないでしょうか?f

    キャンセル

  • 2018/07/05 23:20

    > この方法について教えていただけないでしょうか?f

    ファイルを、このようにするということです。
    ------------------------------------
    寒い。もっと着てくれ
    ばよかった。
    君は冬の山を知ってい
    るな。
    -------------------------------------

    キャンセル

  • 2018/07/05 23:50

    どうもありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    【至急】ラムダ式、StreamAPIについて

    前提・実現したいこと ラムダ式、StreamAPIを用いて以下の機能を実装したいと考えております。 ・引数のリストから最大値の取得   ・引数のリストから特定の文字を表示させ

  • 解決済

    Webサイトのxmlコードを読み取るプログラム開発

    windows form applicationで、webサイトのxmlコードを読み込むプログラムを作りたいと考えていますが、どのように作ればよいか大まかにでも教えていただきたいと

  • 解決済

    javaでデータを読み込んでソートしたいのですがうまく来ません

    コンパイルするとエラーになって 「シンボルが見つかりません」と表示されます。 他にも問題があれば教えてください import java.io.File; import

  • 受付中

    Watson の speech to text を HTTP REST で呼び出す方法

    前提・実現したいこと 【IBM Watson音声認識のAPI呼び出し】 IBM Watson の HTTP REST API で speech to text の recogn

  • 解決済

    行列データ 配列 格納

    前提・実現したいこと 3行3列のテキストデータを読み込み3行3列の配列に格納 行数は不確定にする予定 お願いいたします。 発生している問題・エラーメッセージ 1行

  • 解決済

    WCFのPOST送受信について

    ■VS2010 ■SQLServer2014, SQLServerManagementStudio WCFサービスを実装し、POSTされてきたHTTPRequestから引数を受

  • 解決済

    自分自身のクラスに値を代入したい

    前提・実現したいこと C#で設定ファイルを読み込む処理を実装しています。 発生している問題・エラーメッセージ どうやればクラス内のメソッドから自分自身のクラスに値を代入で

  • 解決済

    c# html~情報取得~表示

    私は、プログラミング言語のc#を学び始めた初心者です。 関東でIT関連の仕事をしています。 以前に、少し趣味でJavaを少しかじってましたが、自主的に少しやっていた程度です

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

  • C#

    7080questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。