Tôi đã thử nghiệm với tệp VB.Net cơ bản IO và tách chuỗi. Tôi gặp phải vấn đề này. Tôi không biết liệu nó có liên quan gì đến File IO hay tách chuỗi.Sự cố với tệp IO và tách chuỗi bằng Environment.NewLine trong VB.Net
Tôi viết văn bản vào một tập tin như vậy
Dim sWriter As New StreamWriter("Data.txt")
sWriter.WriteLine("FirstItem")
sWriter.WriteLine("SecondItem")
sWriter.WriteLine("ThirdItem")
sWriter.Close()
Sau đó, tôi đọc văn bản từ tập tin
Dim sReader As New StreamReader("Data.txt")
Dim fileContents As String = sReader.ReadToEnd()
sReader.Close()
Bây giờ, tôi đang tách fileContents
sử dụng Environment.NewLine
là dấu phân cách.
Dim tempStr() As String = fileContents.Split(Environment.NewLine)
Khi tôi in các mảng kết quả, tôi nhận được một số kết quả kỳ lạ
For Each str As String In tempStr
Console.WriteLine("*" + str + "*")
Next
Tôi được thêm vào * s đến đầu và kết thúc của các mục Mảng trong in ấn, để tìm hiểu những gì đang xảy ra . Vì NewLine
được sử dụng làm dấu phân tách, tôi mong đợi các chuỗi trong Mảng không có bất kỳ dòng mới nào. Nhưng sản lượng là này -
*FirstItem*
*
SecondItem*
*
ThirdItem*
*
*
nên không nó được điều này -
*FirstItem*
*SecondItem*
*ThirdItem*
**
??
Tại sao có một dòng mới ở đầu tất cả trừ chuỗi đầu tiên?
Cập nhật: tôi đã làm một nhân vật bằng cách in nhân vật của fileContents
và nhận này -
F - 70
i - 105
r - 114
s - 115
t - 116
I - 73
t - 116
e - 101
m - 109
- 13
- 10
S - 83
e - 101
c - 99
o - 111
n - 110
d - 100
I - 73
t - 116
e - 101
m - 109
- 13
- 10
T - 84
h - 104
i - 105
r - 114
d - 100
I - 73
t - 116
e - 101
m - 109
- 13
- 10
Dường như 'Environment.NewLine' bao gồm
- 13
- 10
13 và 10 .. Tôi hiểu không. Nhưng không gian trống ở giữa? Tôi không biết liệu nó có đến do in trên bảng điều khiển hay thực sự là một phần của NewLine
. Vì vậy, khi chia tách, chỉ có ký tự tương đương với giá trị ASCII 13, là ký tự đầu tiên của NewLine
, được sử dụng làm dấu phân tách (như được giải thích trong phần trả lời) và phần còn lại vẫn còn tồn tại trong các chuỗi. Đối với một số lý do, không gian trống bí ẩn trong danh sách ở trên và giá trị ASCII 10 cùng nhau dẫn đến một dòng mới đang được in.
Hiện đã rõ. Cảm ơn đã giúp đỡ. :)
Ký tự 13 là vận chuyển hàng hóa, 10 là nguồn cấp dữ liệu đường. Đó là lý do tại sao nó xuất hiện như một dòng trống trong kết quả của bạn, * bởi vì nó in một dòng mới *. Nếu câu trả lời trả lời câu hỏi của bạn, hãy chắc chắn chấp nhận câu hỏi này :) –
Hey .. ahem .. thanks: D: D – Senthil