1

使用下面的代码循环遍历我的数组,该数组是通过读取一个包含 10 行左右的文本文件创建的,因此数组中的每一件事都是文本文件中的这些行之一

Dim myarray As Array
myarray = Split(stringfromtextfile, vbCrLf)
For each element in myArray
MgBox(element)
Dim splititem As String = Split(element, "\")

消息框显示了我所期望的行,但是当我尝试将其拆分时,我得到了错误:

错误 1 ​​类型“字符串的一维数组”的值无法转换为“字符串”。

如何将消息框中显示的值转换为字符串,然后可以对其进行拆分?

干杯!

4

2 回答 2

3

这行代码无效:

Dim splititem As String = Split(element, "\")

Split函数返回一个字符串数组,但您试图将结果分配给仅表示单个字符串的变量。

这就是错误消息告诉您的内容:“'1-dimensional array of String' 类型的值”是从Split函数返回的内容,并且“无法转换为 'String'”以便将其存储在splititem多变的。

将其更改为如下所示(注意括号,它表示一个字符串数组):

Dim splititem As String() = Split(element, "\")

并且强烈考虑使用 .NET Framework 方法进行字符串操作,而不是旧的 VB 6 方法。提供它们主要是为了与旧代码兼容,而不是用于新代码。

如果您实际上是在编写 VB 6 代码(就是这个样子),而不是 VB.NET 代码,那么您不能在变量声明时为其赋值。您需要将它们拆分为单独的语句:

Dim splititem As String()
splititem = Split(element, "\")
于 2013-08-20T12:20:42.800 回答
2

我会使用 .NET 方法而不是非强类型的 VB6 方法,因此效率较低且 - 更重要的是 - 容易出错且可读性较差。

例如使用 LINQ:

Dim first10LineFields = From line In System.IO.File.ReadLines(path)
                        Let fields = line.Split("\"c)
                        Select fields
                        Take 10

输出:

For Each lineFields  As String() In first10LineFields 
    Dim fieldsCommaSeparated = String.Join(",", lineFields)
    MessageBox.Show(fieldsCommaSeparated)
Next
于 2013-08-20T12:24:59.493 回答