2012-05-26 3 views
-1

Я борюсь за некоторые кодировки и надеялся, что кто-то может помочь мне, пожалуйста, что я пытаюсь сделать, это прочитать текстовый файл и преобразовать column2 в нижний регистр и сохранить его снова ,Using.tolower function with vb.net

Но я получаю Значение типа Integer не может быть преобразовано в 'System.Globalization.CultureInfo'. после .ToLower?

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

большое спасибо hans – user1413746

1

line.ToLower(1) недействителен.

ToLower не принимает параметров.

Я предполагаю, что вы имеете в виду, чтобы получить более низкую версию случае первого результата split:

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

Making первую строку:

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

Update:

Теперь, когда вы объяснили свою проблему, я предлагаю использовать библиотеку, которая занимается этим видом tructured text file - используйте TextFieldParser для чтения файла и непосредственного управления значениями. Вы можете использовать некоторые из статических методов Write* класса File для записи нового файла.

+0

Спасибо, я попробовал это раньше, но у меня «ToLower» не входит в «System.Array». – user1413746

+0

@ user1413746 - Это не так, поэтому вам нужно получить доступ к _element_ массива строк до вызова 'ToLower'. – Oded

+0

@ Downvoter - прокомментировать? – Oded