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

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

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

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

Q&A

解決済

2回答

2249閲覧

C# for文繰り返し最後のタブをなくしたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

1クリップ

投稿2017/06/19 06:15

こんにちは。
C#の質問です。

現在for文での繰り返しをした結果をテキストファイルに表示させたいのですが
水平タブをつけるとどうしても最後に出力した値のあとに水平タブがついてしまいます。
最後の出力時には水平タブをつけないようにしたいのですがどうすればよいのでしょうか?
あとバックスペースのエスケープシーケンスは使わないようにしたいです。
よろしくお願いいたします。

C#

1コード 2 3using System; 4using System.IO; 5 6/// <summary> 7/// 名前空間をSubjectに命名する 8/// </summary> 9namespace Subject 10{ 11 /// <summary> 12 ///計算処理クラス 13 /// </summary> 14 public class calculation 15 { 16 /// <summary> 17 /// プログラムを実行する 18 /// </summary> 19 /// <param name="args"></param> 20 static void Main(string[] args) 21 { 22 //ファイルにテキストを書き出し 23 using (StreamWriter writer = new StreamWriter("subject.txt")) 24 { 25 //コンソール画面に表示させる変数 26 int result = 0; 27 //2以上18以下の値を改行表示させる 28 for (int i = 0; i < 9; i++) 29 { 30 //result変数に2ずつ足していく 31 result += 2; 32 33 //計算結果を書き出す 34 writer.WriteLine(result); 35 } 36 //20以上30以下の値を偶数のみの値を水平タブ表示させる 37 for (int j = 0; j < 6; j++) 38 { 39 //result変数の値18から2ずつ足していく 40 result += 2; 41 //計算結果を書き出す 42 writer.Write("{0}\t", result); 43 } 44 45 //バッファに残る値を書き出す 46 writer.Flush(); 47 } 48 } 49 } 50}

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

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

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

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

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

guest

回答2

0

string.Join("\t",array)

を使うといいかと。

C#の新文法のローカル関数を使うとこんな感じにかけますね。

IEnumerable<int> fuc() { for (int i = 0; i < 20; i++)  {    yield return i * 2;   } } writer.WriteLine(string.Join("\t", fuc()));

投稿2017/06/19 07:06

編集2017/06/19 07:07
kiichi54321

総合スコア1984

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

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

退会済みユーザー

退会済みユーザー

2017/06/20 01:18

回答ありがとうございます。 新文法ということもあり、あまりみたいことがない文法ですね。 試してみます。 ありがとうございました!
guest

0

ベストアンサー

やり方は色々ありますが私が比較的好んでよく使う方法は

c#

1string tab = ""; 2for (int j = 0; j < 6; ++j) { 3 result += 2; 4 writer.Write("{0}{1}", tab, result); 5 tab = "\t"; 6} 7

というようなイメージの構成です。
要点としては
・区切りは後ろではなく前に付けるよう想定する
・区切りは最初だけ空で2回目以降はずっと固定文字列が割り当てられるので条件分岐等はしない

投稿2017/06/19 06:31

HiroshiWatanabe

総合スコア2160

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

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

退会済みユーザー

退会済みユーザー

2017/06/19 06:53

早速の回答ありがとうございます。区切りを前につけることで繰り返し処理をすることで最後の処理が終わっても出力したら最後の値の後にはタブスペースがつかないんですね! そしてタブスペースを最初の処理を終えた後にtab文字をタブスペースに変換することで2回目から区切りがつくというわけでしょうか?
退会済みユーザー

退会済みユーザー

2017/06/20 01:15

分かりました。 とても早い対応と分かりやすい解説ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問