Попытка найти наиболее эффективный способ сделать это и задавалась вопросом, могут ли регулярные выражения быть полезными в этом случае.Извлечение ряда строк из массива с использованием Regex
Я перебираю массив строк до тех пор, пока не нахожу строку, которая начинается с или содержит следующий шаблон: abc 1234. До сих пор я занимался двумя форматами - одним пробелом и двумя пробелами. Хотя в некоторых случаях может быть больше пробелов.
Затем я ввести то время как цикл, который должен в цикле и процесс каждой линии до тех пор пока он находит другой образец, который также startes с «ABC», но за которым следует число, отличное от 1234.
If MyArray(i).ToString(0.ToLower().StartsWith("abc 1234") or If MyArray(i).ToString(0.ToLower().StartsWith("abc 1234")
While Not MyArray(i).ToString().ToLower().StartsWith("abc")
''process line here
i+=1
End while
end if
Дело в том, что массив содержит кучу строк, которые смотрят с помощью «abc 1234», поэтому я никогда не знаю, когда выходить до тех пор, пока я не столкнусь с другим шаблоном «abc», но с другим номером. Я не хочу выходить из цикла while, если встречается другой шаблон «abc 1234», поэтому использование «abc» в условиях цикла не будет достаточным
Может ли кто-нибудь помочь?
Я думал использовать функцию в моем состоянии в то время как петля т.е.
Function CheckForEnd(ByVal input As String, ByVal pattern As String) As Boolean
Dim result As Boolean = False
If Regex.Split(pattern, "[ ]{1,}").Length = 2 Then
If Regex.Split(input, "[ ]{1,}").Length > 2 Then
If Regex.Split(input, "[ ]{1,}")(0).Trim().Equals(Regex.Split(pattern, "[ ]{1,}")(0).Trim()) Then
If Regex.Split(input, "[ ]{1,}")(1).Trim().Equals(Regex.Split(pattern, "[ ]{1,}")(1).Trim()) Then
result = True
End If
End If
End If
End If
Return result
End Function
Так мой, пока цикл выглядит следующим образом:
While Not CheckForEnd(MyArray(I),"abc 1234")
''my code here
I+=1
End While
Но я не уверен, что это наиболее эффективный способ сделай это. Пожалуйста, советы
Вот пример:
«Это тестовая строка.»
"Это еще один тест строка"
"а 1234 (100-00)"
"Это еще одно предложение"
"это последовательность чисел: 34566900"
"а 1234 (300-01)"
"Больше не связанные вещи ...."
«а 7890 (500-01) теста»
«больше материала ...»
«другая строка»
Так что, если выше мой массив строк (чтобы быть ясно, каждая строка отдельный индекс массива), то мне нужно следующую часть извлеченного:
"ABC 1234 (100-00)"
"Это еще одно предложение"
«Это последовательность чисел: 34566900"
"а 1234 (300-01)"
«Больше не связанные вещи ...."
Так что петля через него, после того, как я сталкиваюсь первыми а 123 и функция помогает мне проверить каждую строку для появления следующего аЬса, за которой следует число, отличного от 1234.
[txt2re] (http://txt2re.com/) очень полезен для этого. – cybermonkey
Не могли бы вы прояснить, как это можно использовать в моем конкретном случае? – ElenaDBA