2013-08-20 4 views
1

Используя приведенный ниже код, чтобы перебрать мой массив, который был создан путем чтения текстового файла с 10 строками в нем, поэтому каждая вещь в массиве является одной из этих строк из текста файлvb.net преобразовать элемент массива в строку

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'.

Как получить значение, которое было показано в окне сообщения, преобразованном в строку, чтобы я мог выполнить разделение на нем?

Cheers!

+0

Почему бы вам не использовать методы .NET? Например: 'Dim lines = System.IO.File.ReadLines (path) .Take (10)', чтобы взять первые десять строк из файла. Затем для разделения используйте 'String.Split'. –

+0

Почему вы не используете общий «Список (String)»? – MarcinJuraszek

+1

Вы уверены, что это код VB.NET? Для меня это похоже на VB 6. –

ответ

3

Эта строка кода является недопустимым:

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

В Split function возвращает массив строк, но вы пытаетесь присвоить результат переменной, которая представляет собой лишь одну строку.

Это то, что сообщает вам сообщение об ошибке: «значение типа» 1-мерного массива String «» - это то, что возвращается из функции Split, и что «невозможно преобразовать в« String »» в порядке для сохранения в переменной splititem.

Изменить его выглядеть следующим образом (обратите внимание на круглые скобки, которые указывают в массив из String):

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

И настоятельно рекомендуется использовать методы .NET Framework для работы со строками, а не старый VB 6. Они предоставляются в основном для целей совместимости со старым кодом, не предназначенным для использования в новом коде.

Если вы на самом деле : записываете код VB 6 (как это выглядит), а не код VB.NET, вы не можете назначать переменные в точке их объявления. Вам нужно разделить эти на отдельные заявления:

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

Спасибо, Коди, не видел дерева для деревьев! Приветствия. Да, это старый vbscript, который обновляется до .NET. Еще раз спасибо! –

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 
Смежные вопросы