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


Автор: korob2001 25.11.2004, 23:20
Есть такая проблема.
Допустим есть переменная строкового типа, её нужно разбить посимвольно и сохранить в массив.
На Perl это будет выглядеть так:
Код

my $str = "Hello, world!";
my @chars = split("", $str);


ОК. На VB пишу такой код:

Код

Option Explicit
Dim strMy As String
Dim charsMy() As String

Private Sub Form_Load()
       strMy = "Hello, world!"
End Sub

Private Sub Command1_Click()
       Dim i As Integer
       charsMy() = Split(strMy, "")
       For i = 0 To UBound(charsMy)
           Debug.Print charsMy(i)
       Next i
End Sub

Отсюда видно, что массив состоит из одного элемента, в котором содержится вся строка.
Почему так? :||||||

Заранее спасибо,
Денис

Автор: boevik 26.11.2004, 01:04
В VB split работает по другому. Описано в MSDN.

Автор: cardinal 26.11.2004, 01:07
Цитата(korob2001 @ 25.11.2004, 22:20)
Почему так?

Потому, что второй параметр у split это разделитель. Он у тебя равен "" - вот и не делится у тебя строка.
Читаем (как всегда MSDN smile):
Цитата

Split function
...
delimiter

Optional. String character used to identify substring limits. If omitted, the space character (" ") is assumed to be the delimiter. If delimiter is a zero-length string, a single-element array containing the entire expression string is returned.

Можешь написать так:
Код

Option Explicit

Dim strMy As String
Dim charsMy() As String

Private Sub Form_Load()
      strMy = "Hello, world!"
End Sub

Private Sub Command1_Click()
   Dim i As Integer
   Dim strNewMy As String
   For i = 1 To Len(strMy)
       If Mid(strMy, i, 1) <> " " Then strNewMy = strNewMy & Mid(strMy, i, 1)
       strNewMy = strNewMy & " "
   Next
   strNewMy = Trim(strNewMy)
   charsMy() = Split(strNewMy, " ")
   For i = 0 To UBound(charsMy)
       Debug.Print charsMy(i)
   Next i
End Sub

Возможно можно и покрасивей написать...

Автор: korob2001 27.11.2004, 04:40
To boevik
Сегодня только инет подключил, теперь буду MSDN юзать. ;)))

cardinal
Спасибо, то что нужно.

Автор: cardinal 27.11.2004, 15:38
Цитата(korob2001 @ 27.11.2004, 03:40)
Сегодня только инет подключил, теперь буду MSDN юзать. ;)))

MSDN есть и на диске...

Автор: korob2001 27.11.2004, 21:08
Цитата

MSDN есть и на диске...

Точнее сказать, он там должен быть. ;)))) Но у меня нет MSDN. После установки Visual Basic, перезагружаю комп и запускаю повторно инсталяцию. Жму кнопку "Установить MSDN", на что получаю сообщение "Вставьте второй диск". Проблема в том, что у меня только один диск. smile((

Автор: cardinal 27.11.2004, 22:28
Цитата(korob2001 @ 27.11.2004, 20:08)
Проблема в том, что у меня только один диск.

Понимаю smile

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