Я согласен, что этот конкретный фрагмент логики должен быть четко и легко реализован с помощью операций Split () и Join (). В то время как всегда можно написать длинный код встроенного кода, который улучшает их скорость, есть две причины не делать этого:
- Разница в производительности, вероятно, даже не достигнет коэффициента 1,5, и такая логика редко используется миллионы раз на очень больших строках.
- Такая встроенная логика не только непрозрачна и сложна в обслуживании, но с первого раза трудно понять, когда пишется программа.
Пример:
Function SplitString(ByVal Text As String) As String()
Dim Slices() As String
Dim UnquotedSlice As Long
Slices = Split(Text, """")
For UnquotedSlice = 0 To UBound(Slices) Step 2
Slices(UnquotedSlice) = Replace$(Slices(UnquotedSlice), " ", vbNullChar)
Next
SplitString = Split(Join$(Slices, ""), vbNullChar)
End Function
Кстати: спасибо всем, кто может исправить неправильную разметку кода, которую использует этот сайт в моем примере выше.
Редактировать: Неважно, я выдохнул. Маркированный список вызвал у парсера спазм.