2016-11-21 11 views
-3

Код:Неправильное поведение расщепленной функции

Dim list1 As New List(Of String)(line_items.Split("<<>>")) 

Я пытаюсь разделить следующую строку.

line_items=8903385828097<>PRINTED TWILL DUNGAREES<>1<>25.94<>50.00<>497.50<>524.86<>995.00<<>> 

Получение неправильной информации. Пожалуйста, обратитесь к выпуску продукции:

check output here.

ответ

0

Вы можете попробовать этот код:

Dim list1 As New List(Of String)(line_items.Replace("<<>>", "").Replace("<>", "#").Split("#")) 
+0

Сэр, я знаю, что могу использовать функцию замены для замены <<>> с одним символом и <> с другим одиночным символом, но почему функция split работает так? –

+0

Я понял, что вы искали решение, чтобы решить вашу проблему. – romulus001

+0

yes man! Спасибо, что появился. –

3

Метод Split принимает параметр типа Char. Ваш код не будет компилироваться с «Option Strict On», потому что вы передали параметр типа String. Когда параметр Strict выключен, компилятор делает неявный typecast от String до Char, и поэтому «<» c (первый символ) передается вместо « < >>».

Если вы хотите разбить по строке «<>» или «< 4444», вам необходимо передать одно из этих значений в качестве единственного элемента массива строк.

Dim list1 As New List(Of String)(line_items.Split(New String() {"<>"}, StringSplitOptions.None)) 

Dim list1 As New List(Of String)(line_items.Split(New String() {"<<>>"}, StringSplitOptions.None)) 
0

Ниже приводится код:

Dim list1 As New List(Of String)(line_items.Split(New String() {"<<>>"}, StringSplitOptions.RemoveEmptyEntries)) 

Я использовал New Char() вместо New String(). New String() работал хорошо.