2016-07-28 6 views
-5

C#を使用してフラットファイルの行末にテキストを追加する方法は?基本的には、各行の最後に行番号を追加したいと思います。C#を使用してフラットファイルの各行の末尾にテキストを追加

+2

あなたの質問に基づいて、あなたの特定のケースが「間違っています」が「行末にテキストを追加する方法」のように聞こえるが、あなたは[MCVE]または少なくともどのようにして問題を解決しようとしたのかを調査します。 –

答えて

0

フラットファイルでは、通常のテキストファイルを意味すると思いますか?

まず、テキストをその行に分割したいとします。これは次の手段で行われます。

string[] linesInText = stringWithText.Split('\n'); 

文字は改行を表します。だから、いつも「新しいライン」が存在し、そこに分割されます。機能の説明Splitは、文字列をパートに分割し、セパレータは入力として与えられます。パーツは文字列配列になります。この場合、テキストまたは文字列のすべての行が配列に変換されます。

ここで、各行の末尾に数値を追加したいとします。これは、次のようにして行うことができます。

string stringWithRowNumbers = ""; 
for (int i = 0; i < linesInText.Length; i++) // Go through all lines 
{ 
    stringWithRowNumbers = linesInText[i] + "YourNumbers" + "\n"; // The old/first line + your numbers + new line 
} 

これで、すべての行の末尾に数値の文字列を設定する必要があります。

こちらがお役に立てば幸いです。

EDIT:行番号の入力を求められました。ここに正しいコードがあります。

string stringWithRowNumbers = ""; 
for (int i = 0; i < linesInText.Length; i++) // Go through all lines 
{ 
    // The space is intentional. If there is no space, then the number will not have any space between itself and the line 
    stringWithRowNumbers = linesInText[i] + " " + (i + 1) + "\n"; // The old/first line + row number + new line 
} 
0

だけMasterXDのソリューションの迅速なリファクタリング:このためのStringBuilderを使用して

var linesInText = stringWithText.Split(Environment.NewLine); 

StringBuilder stringWithRowNumbers = new StringBuilder(); 

var row = 1; 
foreach (var line in linesInText) 
{ 
    stringWithRowNumbers.Append(line); 
    stringWithRowNumbers.Append(row++); 
    stringWithRowNumbers.Append(Environment.NewLine); 
} 
string result = stringWithRowNumbers.ToString(); 

は、単純な文字列の連結よりもはるかに優れを実行するために起こっていると、このユースケースでのベストプラクティスと考えています。

1

LinqのEnumerable.Selectとインデックスを使用し、String.Join Method (String, String[])を使用して行を再構築する簡単な行バージョンです。

string path = "Path to your flat file"; 
var numberedText = String.Join(Environment.NewLine, File.ReadAllLines(path).Select((line, index) => string.Join(" ", line.Trim(), index + 1))); 
Console.WriteLine(numberedText); 

結果の文字列は、各行の最後に行番号を持ちます。

関連する問題