2016-11-22 2 views
1

Я построил проект, который читал данные из отчета, и он работал нормально, но теперь по какой-то причине отчет помещает все в строки , Поэтому я хочу изменить средство чтения потока, чтобы удалить или игнорировать кавычки, когда он читает строки.VB.net Как удалить символы кавычек из streamReader.readline.split()

Это снайпер части, которая читает строки.

Dim RawEntList As New List(Of Array)() 

Dim newline() As String 
Dim CurrentAccountName As String 
Dim CurrentAccount As Account 
Dim AccountNameExsists As Boolean 
Dim NewAccount As Account 
Dim NewEntry As Entrey 
Dim WrongFileErrorTrigger As String 

ListOfLoadedAccountNames.Clear() 
'opens the file 
Try 
    Dim sr As New IO.StreamReader(File1Loc) 
    Console.WriteLine("Loading full report please waite") 
    MsgBox("Loading full report may take a while.") 
    'While we have not finished reading the file 
    While (Not sr.EndOfStream) 
     'spliting eatch line up into an array 
     newline = sr.ReadLine.Split(","c) 
     'storring eatch array into a list 
     RawEntList.Add(newline) 
    End While 

И тогда, конечно, я итерацию по списку, чтобы вытащить информацию для заполнения объектов, как это:

For Each Entr In RawEntList 
    CurrentAccountName = Entr(36) 
    AccountNameExsists = False 
    For Each AccountName In ListOfLoadedAccountNames 
     If CurrentAccountName = AccountName Then 
      AccountNameExsists = True 
     End If 
    Next 

ответ

1

Вы можете просто сделать

StringName.Replace(ControlChars.Quote, "") 

или

StringName.Replace(Chr(34), "") 

OR

streamReader.readline.split().Replace(Chr(34), "") 
+0

Сво не строковые его массив строк вот как работает сплит(). и вы не можете заменить вызов на массив. Думаю, я мог бы назвать это значением evey в массиве вроде этого 'ent (0) .Replace (Char (34)," ")', и это нужно было бы оспаривать через 50 раз. ведьма уже работает внутри другого илтратации, которая работает 150 000 и более раз. Его позитивный, но он очень неэффективен. Таким образом, что-то исключает ваши лучшие два решения, но третье, что я могу попробовать проверить, работает ли он. – skyzzle

+1

@SkylineGodzilla: Положите '.Replace()' перед тем, как вы вызовете '.Split()'. Хотя последний может возвращать массив, 'ReadLine()' не делает: 'sr.ReadLine(). Замените (Chr (34)," ") .Split (", "c)'. –

+0

@WallyModz: ИЛИ 'StringName.Replace (" "" "c," ")'. ;) –

0

Как насчет замены перед расколом после строки readline? Это должно сохранить умножение итераций или, если возможно, еще лучше (если возможно), замените на весь файл (если данные отформатированы так, как это можно сделать &, у вас достаточно памяти), используя метод ReadAllText объекта File, do замените, затем прочитайте строки из памяти, чтобы построить массив (супер быстро!).

File.ReadAllText (путь)

Смежные вопросы