Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Разбить строку на части


Автор: Piece of Cake 27.3.2002, 19:04
Привет всем!
У меня есть некая строка, содержащая символы перевода строки "\n". Мне нужно посчитать их кол-во и получить несколько строк из символов, находящихся между символами перевода строки.
Как это сделать?
Больше спасибо.

Автор: cardinal 27.3.2002, 23:06
Вот это Вам поможет посчитать кол-во \n в TextBox. Остальное можно сделать разными способами (мыслей у меня много, а делать пока не пробовал). Если ничего не придумайте, то пишите. Вообще я не считаю, что таким образом в конце концов получится идеальный вариант решения проблемы, но лучше я не придумал как можно посчитать \n в строке. Ну дерзайте! :D

Private a As Boolean
Private b As Boolean
Private x As Integer
Private y As Integer

Private Sub Command1_Click()
Text1.Text = ""
Text2.Text = ""
y = 0
End Sub

Private Sub Form_Load()
x = 1
y = 0
End Sub

Private Sub Text1_Change()
Dim str As String
If b = True Then
b = False
'a = False
y = y + 1
Text2.Text = y
'Text2.Refresh
End If
Text2.Refresh
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)

If a = True Then
   If x <= 0 Then
   a = False
       If KeyCode = 78 Then
       b = True
       x = 1
       End If
   End If
   Text1_Change
End If

If KeyCode = 220 Then
a = True
x = x - 1
End If

End Sub

В коде есть один недостаток - раскладки клавиатуры не распознаются. Соответственно и \т будет тоже считаться так же как и \n !

Автор: Piece of Cake 28.3.2002, 11:56
cardinal , спасибо за помощь, но это не совсем то, что мне надо. Логика мне не нужна, я просто недавно знаком с VB, и не знаю, как простые вещи реализуются.

    Попробую сформулировать вопрос по-другому:
Есть строка str_A="b1Abb2Abbb3Abbbb4"
Mне нужно получить количество вхождений символа "A" в строке str_A, индексы всех вхождений, а затем получить массив строк, в котором бы содержалось:
array[1]="b1"
array[2]="bb2"
array[3]="bbb3"
array[4]="bbbb4"
Да, вот так вроде бы понятней, чего бы мне хотелось. :)
Спасибо.

Автор: Grey 28.3.2002, 17:39
Можно так например. Правда если буквы А в строке нет совсе в коллекции будет вся строка :D . Ну вообщем разберешься.

Код
Dim str As String
   Dim i As Long
   Dim j As Long
   Dim StrArray As New Collection
   str = "b1Abb2Abbb3Abbbb4"
   i = 1
   Do While True
       j = i
       i = InStr(j, str, "A", vbBinaryCompare)
       If i <> 0 Then
           StrArray.Add Mid(str, j, i - j)
       Else
           StrArray.Add Mid(str, j, Len(str) - j + 1)
           Exit Do
       End If
       i = i + 1
   Loop

Автор: KDA 29.3.2002, 16:34
Split("[Строка]","[символ разбития]"...) возвращает массив строк

Автор: sharig 29.5.2002, 00:30
Описание функции - http://sharig.webzone.ru/global/function/q_z/Split.htm

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)