-1

我在一些编码上苦苦挣扎,希望有人能帮助我,我想做的是读取一个文本文件并将 column2 转换为小写并再次保存。

但我得到“整数”类型的值无法转换为“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
4

2 回答 2

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()

更新:

现在您已经解释了您的问题,我建议使用处理这种结构化文本文件的库 - 使用TextFieldParser来读取文件并直接操作值。您可以使用类Write*上的一些静态方法File来写出新文件。

于 2012-05-26T08:18:05.590 回答
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
于 2012-05-26T10:00:38.490 回答