andrew898701 Ответов: 1

Проверить, начинается ли строка с какого-либо элемента массива?


Привет,

Я работаю в Visual Basic, чтобы создать код, который включает специальное сообщение для деталей в зависимости от того, указывает ли файл excel, что он им нужен. Файл excel состоит из 3 столбцов: символы, с которых часть может начинаться, содержать или заканчиваться. Код должен определить, начинается ли деталь с комбинации символов, включенной в столбец "начинается с", содержит ли она одну из столбцов "содержит" или заканчивается одной из столбцов "заканчивается С", и если это произойдет, то соответствующее сообщение с этими спецификациями будет отображаться в другом месте кода.

Чтобы получить данные из файла excel (csv), я использую streamreader и помещаю каждый столбец в массив следующим образом:

Dim SData() As String
        Dim SWith, Contain, EWith, Message As New List(Of String)()

        Using sr As New StreamReader("L:\Mfg-Eng\SystemID\DOWNLOADS\SCSpecialNotes.csv")
            While Not sr.EndOfStream
                SData = sr.ReadLine().Split(","c)

                SWith.Add(SData(0).Trim())
                Contain.Add(SData(1).Trim())
                EWith.Add(SData(2).Trim())
                Message.Add(SData(3).Trim())
            End While
        End Using


Я новичок в visual basic, и мне трудно придумать оператор "If", чтобы следовать за созданием этих массивов, в котором оператор выполняет код, когда рассматриваемая строка (не написанная в приведенном выше коде, я буду называть ее "partID") начинается с любого члена массива "SWith" или заканчивается любым членом массива "EWith".

Что я уже пробовал:

Я попытался создать отдельную строку, чтобы использовать метод "Contains" для поиска массива, в котором выполняется оператор If, когда partID начинается со строки, содержащейся в массиве SWith, но это не работает, когда я не дал строке-заполнителю значения, и кажется громоздким и запутанным способом решения этой проблемы. Я много искал в интернете способ написания этого кода, но так и не смог его найти, а я очень новичок в использовании Visual Basic и его команд. Любая помощь будет очень признательна.

1 Ответов

Рейтинг:
6

Gerry Schmitz

Вы не сказали, нужно ли искать "3 массива" параллельно или нет.

Смотря какой, либо:

1) маркируйте строку и используйте первый, "средний" и последний маркеры для поиска массивов.

2) или проверьте строку с помощью "StartsWith" (запись таблицы), "EndsWith" и "Contains", если вы используете таблицу(ы) в качестве драйвера.


andrew898701

Спасибо за ответ, я закончил тем, что использовал цикл for, который проверяет, есть ли в каждой строке ячейки, которые квалифицируют часть для ее сообщения, они не ищутся параллельно.

Еще раз спасибо!