2017-07-20 8 views
0

私は3つのtxtファイルの内容を1つにまとめました。 私はカンマを検索してドットに変更しました。ここまでは順調ですね。 しかし...C#欠けているテキストのtxtファイルを検索します。見つからない場合は、テキストを追加してください。

今してその結合ファイル内の行は、「LENGTH」 を読み込む(はい、それはスペース文字が続く単語の長さである)

時にはその行は番号が続いているすべての...しかし...その行に数字やその他の文字が続かない場合は、数字の0(ゼロ)を加算する必要があります。

どうすれば解決できますか?

+0

あなたはこれまでに試したことがありますか、あなたは長さではなく長さを意味しますか? –

+0

ファイルを1行ずつ読むだけで、桁のない "LENGTH"(または "LENGHT")行を除いて、それぞれの行をターゲットファイルに書き込んだ後、 "0"を追加してターゲットファイルに書き込みます。あなたのコードのどの時点であなたは立ち往生しましたか? –

+0

'LENGHT'は行末にありますか?後に番号がない場合、それはまだ正しいと考えられますか?あなたはそれが誤字であり、 'LENGTH'であるべきことを知っていますか?あなたはそのタイプミスをしたいですか? –

答えて

0

読むファイルのすべての行は、間違ったものをraplaceバックファイルにそれらを書く:

string[] lines = File.ReadAllLines(filePath); 
File.Delete(filePath); 
File.WriteAllLines(filePath, lines.Select(l => l == "LENGTH " ? "LENGTH 0" : l)); 
+0

@TimSchmelterなぜですか?私は報告ファイルの多くを参照してください。長さはレコード数を意味し、レポートの最後の行です。レコードがない場合、0の代わりに何もカウントが与えられない –

+0

@TimSchmelter 'LENGTH 123'またはそれ以外のものは、完全な行が' LENGTH 'と読み替えられたときには何も置き換えられません。' LENGTH 0'と交換されます –

+0

@RenéVogt私は、他のすべてのバージョンと同様に 'File.ReadAllLines'が' string [] 'を返す.Net 4.6を使用します。 MSDNをご覧くださいhttps://msdn.microsoft.com/de-de/library/s2tte0y1(v=vs.110).aspx –

0

あなたは、単に行毎にファイルをストリーミングしLENGTH 0LENGTHを読み込む行を置き換えることができます。

string source = ...; // your file's name 
string target = ...; // your target file's name 

File.WriteAllLines(target, File.ReadAllLines(source).Select(l => l == "LENGTH " ? "LENGTH 0" : l)); 
関連する問題