2012-05-26 25 views
-1

我在一些編碼上掙扎,並希望有人能幫助我出來請,我想要做的是讀取文本文件並將column2轉換爲小寫並再次保存。Using.tolower函數與vb.net

但我得到類型'Integer'的值不能轉換爲'System.Globalization.CultureInfo'。之後。下降?

Dim Convertcolumn = From line In System.IO.File.ReadLines("Path") 
       Select line.Split(" "c)(1) & line.ToLower(1) 
    Dim writer As IO.StreamWriter = New IO.StreamWriter("Path2") 

    For Each line In Convertcolumn 
     writer.Write((line) & Environment.NewLine) 
    Next 

更新編碼:

Dim Convertcolumn = From line In System.IO.File.ReadLines("C:\Test1.txt") 
        Select line.Split(" "c)(1) & line.Split(" "c)(1).ToLower() 

Dim writer As IO.StreamWriter = New IO.StreamWriter("C:\Test2.txt") 

For Each line In Convertcolumn 
    writer.Write((line) & Environment.NewLine) 
Next 

對不起時,我加入了不顯示的數據看起來像這樣

D00001 BLACK user 
D00002 BLACK user 

列的意見,我想將其更改爲

D00001 black user 
D00002 black user 

回答

1

當文件包含列時,您的原始代碼無法工作。你需要:

Using parser = New FileIO.TextFieldParser("Path") 
     parser.TextFieldType = FileIO.FieldType.Delimited 
     parser.Delimiters = New String() {" "} 
     Using writer = New IO.StreamWriter("Path2") 
      While True 
       Dim words = parser.ReadFields() 
       If words Is Nothing Then Exit While 
       If words.Length > 1 Then words(1) = words(1).ToUpper 
       writer.WriteLine(String.Join(" ", words)) 
      End While 
     End Using 
    End Using 
+0

非常感謝漢斯 – user1413746

1

line.ToLower(1)無效。

ToLower不需要參數。

我假定你的意思,以獲得split的第一個結果的小寫版本:

line.Split(" "c)(1).ToLower() 

製作的第一行:

Dim Convertcolumn = From line In System.IO.File.ReadLines("Path") 
      Select line.Split(" "c)(1) & line.Split(" "c)(1).ToLower() 

更新:

現在你已經解釋了你的問題,我建議使用一個處理這種結構的庫d文本文件 - 使用TextFieldParser來讀取文件並直接操作值。您可以使用File類中的一些靜態Write*方法寫出新文件。

+0

謝謝,我曾嘗試過,但我得到'ToLower'不是'System.Array'的成員。 – user1413746

+0

@ user1413746 - 不是,這就是爲什麼你需要在調用'ToLower'之前訪問字符串數組的_element_。 – Oded

+0

@Downvoter - 謹慎評論? – Oded