3

私は現在、VB.Netのテキストファイルを読んでいます

Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText(file)

ファイルには数行のテキストが含まれており、テキスト ファイルを読み取ると、それらが別々の行にあることがわかり、それに応じて出力されます。

Split(ControlChars.Cr)ただし、 fileReader を異なる行の配列に分割しようとすると、 orを使用しても、改行がそこにとどまっているようですSplit(ControlChars.NewLine)。それは別々の行に正常に分割されますが、表示すると、改行がまだ残っているように、テキストが行に「プッシュ」されます...

何が起こっているのか、これらの「見えない」制御文字を削除する方法について誰か考えがありますか?

テキストファイル:

テスト1
テスト2 テスト3
テスト
4

ファイルリーダー:

テスト1
テスト2 テスト3
テスト
4

lines() プリントアウト

テスト1

テスト2 テスト3

テスト

4

4

4 に答える 4

5

trim()各行で使用すると、余分な空白が削除されます。

于 2011-06-09T21:04:44.767 に答える
2

System.IO.File クラスには、実際に文字列の配列を 1 行に 1 つずつ返す ReadAllLines メソッドがあります。

その方法も機能しない場合は、問題の原因となっているバイトを正確に調べます。ウォッチ ウィンドウでは、System.Text.Encoding.ASCII.GetBytes (sampleLine) を実行して、作業内容を正確に調べることができます。

ASCIIエンコーディングを使用していると仮定していますが、そうでない場合は、ASCIIを正しいオプションに交換し、そのエンコーディングに基づいてファイルの読み取りを変更する必要があります。

于 2011-06-09T21:19:47.520 に答える
1

前述のように、 Readalllines メソッドを使用して自動的に分割します。

あなたが抱えている問題は、PC ASCII ファイルは通常、キャリッジ リターンと改行で分割され、一方だけで分割すると他方が残ることです。前述のように分割してトリミングするか、文字の代わりに文字列で分割する他の分割を使用できます。

文字列としてのdim s() = Split(fileReader ,vbCrLf)

トリムは、問題になる可能性のある状況に応じて、データからスペースも削除します。

于 2011-06-09T22:08:12.320 に答える
0

最近、同様の問題に遭遇しました。分割を実行した後 (または File.ReadAllLines を使用) に余分な行が既に存在するため、Trim() は機能しません。これが私のために働いたものです:

    Dim allText As String = System.IO.File.ReadAllText(filePath)
    allText = allText.Replace(Chr(13), "")
    Dim lines As String() = allText.Split(vbLf)

Chr(13) は、Split() または File.ReadAllLines を使用して余分な行を生成する Control-M 文字です。

于 2013-05-21T16:46:20.643 に答える