2017-04-06 15 views
0

文字列にテキストファイルをインポートした後、stringbuilderを使用してchar配列に設定しましたが、改行も挿入されていますchar配列このn \を使用すると、インデックス21にある要素はインデックス22になり、Environment.NewLineを使用すると、インデックス21にある要素はインデックス23になり、AppendLine() 。私は出力ウィンドウがどのように見えるかのイメージを追加しましたlabyrinthOutput。どのように新しい行を作成するのですか?それをchar配列に配置しないでください。私はあなたが求めているのかわからないんだけどstringbuilderを使用してchar配列に改行を挿入するのを避けるには

using System; 
using System.Collections.Generic; 

using System.Linq; 

using System.Text; 

using System.IO; 

using System.Threading.Tasks; 


namespace ConsoleApplication25 

{ 
class Program 


{ 

    static char[] FloridaArray; 
    static string DenverString; 

    static void Main(string[] args) 
    { 
     //Increase Console Buffer Height 
     Console.BufferHeight = Int16.MaxValue - 1; 

     DenverString = ConvertStringArrayToString(); 
     FloridaArray = DenverString.ToArray(); 
     Console.WriteLine(DenverString); 
     Console.WriteLine(FloridaArray[43]); 
     for (int i = 0; i < FloridaArray.Length; i++) 
     { 
      // Get character from array. 
      char letter = FloridaArray[i]; 
      // Display each letter. 
      Console.Write(i + " Letter: "); 
      Console.WriteLine(letter); 
     } 
    } 

    static string ConvertStringArrayToString() 
    { 
     // Concatenate all the elements into a StringBuilder. 
     StringBuilder builder = new StringBuilder(); 
     foreach (var value in File.ReadAllLines("Labyrint.txt", Encoding.UTF8).Skip(1)) 
     { 


      builder.Append(value); 

      builder.Append('\n'); 

      //builder.Append(Environment.NewLine); 
      //builder.AppendLine(); 
      //builder.Append("\r\n"); 
      //builder.Append("\r"); 




     } 

     return builder.ToString(); 

    } 
} 


} 

output

labyrinth

+0

ファイル全体を改行文字なしで文字列にしたいと思っていますか? –

答えて

0

: 私のコードは次のようになります。あなたが改行を望んでいて欲しくないように思えます。改行を出力したい場合は、Console.Write()で手作業で行うことができます。文字オブジェクト/配列に改行を追加することは簡単ではありません。 \ nとEnvironment.Newlineは文字長が異なる場合があります。\ nはUnixシステムの行終端文字で、\ r \ nはWindowsの行終端文字です。あなたは、文字列から改行を削除したい場合は、

String.Split() 

を行うことができますが、それは空であり、その一部substings、の配列を返しますが、あなたはより多くの柔軟性を与えます。あなたがより多くの可能性がしたいと思うことも有効であり、おそらく、より直接的なアプローチである、

String.Trim() 

です。空白で区切られた文字列の先頭からすべての文字を取り除きます(そのうちnewls)。最後の文字は空白が残っていることを意味します。あなたのデータ構造に改行が必要なのか、それともあなたの出力だけが必要かを明確にしてください。

EDIT:

//FloridaArray exists as char array with newlines 

///make vector that can hold florida char elements without resize 
List<char> tempFloridaCharList = new List<char>(FloridaArray.Length) 
//declare container for florida characters minus newline 
char[] newlinelessFloridaArray; 

foreach(char i in FloridaArray) 
{ 
    if(i== '\r' || i== '\n') 
     continue; 
    tempFloridaCharList.Add(i); 
} 
//you now have all characters that arent newline from FLorida array 
in a list which you can immediately convert to an array. 
newlinelessFloridaArray = tempFloridaCharList.ToArray(); 
//if you dont need the old florida array with \n anymore, you can say: 
FloridaArray = tempFloridaCharList.ToArray(); 

//When youre happy, clear the tempCharList so it can be used again 
tempFloridaCharList.Clear(); 
+0

他の人のように、私はあなたが達成しようとしていることをよく分かりません。 builder.Append(value)を置き換えてください。 builder.Append(value.Trim());でビルドします。その後の行を削除します。 – JimmyJames

+0

私はキーが私がifループを宣言していると思うif(FloridaArray [i]!= '\ n'){フロリダ配列の要素をchar文字に入れよ} else {do nothing} ifステートメントの終わり?どのようにその擬似コードはCのように見えるでしょうか? – cop77

+0

@ cop77既存の文字配列を改行で取り除き、すべての文字を改行から引いたものを作成する方法を提案しました。それが役に立ったら教えてください – schulmaster

0

私は問題を解決しました。私は単に\ nのない配列をリストに移しました。コードは以下にあります。

using System; 
using System.Collections.Generic; 

using System.Linq; 

using System.Text; 

using System.IO; 

using System.Threading.Tasks; 

namespace ConsoleApplication25 
{ 

class Program 


{ 

    static char[] FloridaArray; 

    static string DenverString; 
    static List<string> wrd = new List<string>(); 

    static void Main(string[] args) 
    { 
     //Increase Console Buffer Height 
     Console.BufferHeight = Int16.MaxValue - 1; 

     DenverString = ConvertStringArrayToString(); 



     FloridaArray = DenverString.ToArray(); 

     Console.WriteLine(DenverString); 

     for (int i = 0; i < DenverString.Length; i++) 
     { 

      if (FloridaArray[i] != '\n') 
      { 

       wrd.Add(FloridaArray[i].ToString()); 
       // Get character from array. 
       char letter = FloridaArray[i]; 
       // Display each letter. 
       //Console.Write(i + " Letter: "); 
       //Console.WriteLine(letter); 

       } 
     } 
     foreach (String o in wrd) 
     { 
      Console.WriteLine(o); 
     } 
     Console.WriteLine(wrd[21]); 

    } 

    static string ConvertStringArrayToString() 
    { 
     // Concatenate all the elements into a StringBuilder. 
     StringBuilder builder = new StringBuilder(); 
     foreach (var value in File.ReadAllLines("Labyrint.txt", Encoding.UTF8).Skip(1)) 
     { 


      builder.Append(value); 

      builder.Append('\n'); 

      //builder.Append(Environment.NewLine); 
      //builder.AppendLine(); 
      //builder.Append("\r\n"); 
      //builder.Append("\r"); 




     } 

     return builder.ToString(); 

    } 
} 
} 
関連する問題