使用下面的代码循环遍历我的数组,该数组是通过读取包含10行左右的文本文件而创建的,因此数组中的每个内容都是文本文件中的其中一行
Dim myarray As Array
myarray = Split(stringfromtextfile, vbCrLf)
For each element in myArray
MgBox(element)
Dim splititem As String = Split(element, "\")
消息框显示我正在预期的行,但当我尝试将其拆分时,我得到错误:
错误1'1维数组String'类型的值无法转换为'String'。
如何将消息框中显示的值转换为字符串,然后我可以对其进行拆分?
干杯!
答案 0 :(得分:3)
这行代码无效:
Dim splititem As String = Split(element, "\")
Split
function返回一个字符串数组,但您尝试将结果分配给仅代表一个字符串的变量。
这就是错误消息告诉你的:“类型的'1维数组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, "\")
答案 1 :(得分: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