Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Чем строку поделить? Добавлено: 16.04.07 12:36  

Автор вопроса:  KreAtoR
String = "1/200"
Какие две функиции считывают все что слева от / и все что справа от /
получиться должно
x = 1
y = 200
z = 1 / 200

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 16.04.07 12:42
Split

Ответить

Номер ответа: 2
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #2 Добавлено: 16.04.07 12:46
Точнее:
Dim arr()
Dim myString As String, x As String, y As String
myString = "1/200"
arr=Split(myString,"/";)
x=arr(1)
y=arr(2)

Ответить

Номер ответа: 3
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #3 Добавлено: 16.04.07 12:59
arr=Split(myString,"/";) в этом месте он делает ошибку и говорит, что тип не подходит. Может arr должен быть какогонить особого расширения.
Arseny он не хочет так вот делать, как мне ему объяснить чтоб он понял.

Ответить

Номер ответа: 4
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #4
Добавлено: 16.04.07 13:02
Лучше написать

Dim arr as Variant

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 16.04.07 13:03
str1 = Split("1/200","/";)(0)
str2 = Split("1/200","/";)(1)

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 16.04.07 13:07
Dim arr as Variant

Чушь. Если не указывать явно тип, он по умолчанию Variant, поэтому вводить или нет абсолютно никакой разницы. Другие дело что функция Split возвращает массив типа String, а не Variant :) Поэтому если не владеешь темой, лучше не давать советы которые могут сбить с толка...

Ответить

Номер ответа: 7
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #7 Добавлено: 16.04.07 13:12
Ниче не выходит
он либо пишет когда SPlit что не верно либо уже когда делаю
x=arr(1)
хотя что в arr(1) не непонятно изначально
2HACKER
а откуда взялось str1,str2 и что значит это (0)б (1)

Ответить

Номер ответа: 8
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #8
Добавлено: 16.04.07 13:14
Чушь. ...поэтому вводить или нет абсолютно никакой разницы.

Если нет никакой разницы "вводить или нет", как Вы говорите, а мое введение Вы назвали чушью, значит, что Вы свой вариант тоже назвали чушью.

А вот то, что конструкция Split("1/200";)(0) тоже работает - я этого не знал... За эту мысль спасибо.

Ответить

Номер ответа: 9
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #9 Добавлено: 16.04.07 14:45
Ниче не выходит
он либо пишет когда SPlit что не верно либо уже когда делаю
x=arr(1)
хотя что в arr(1) не непонятно изначально
2HACKER
а откуда взялось str1,str2 и что значит это (0)б (1)

Не пудрись напрасно:
Dim myString As String, x As String, y As String
myString = "1/200"
x = Split(myString, "/";)(0)
y = Split(myString, "/";)(1)
MsgBox x & y

Ответить

Номер ответа: 10
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #10
Добавлено: 16.04.07 15:30
str1 = Split("1/200","/";)(0)
str2 = Split("1/200","/";)(1)

Нууу... Я хоть и дотнетчик, но мне на такой код смотреть жутко :)
Два вызова метода отнмиут в 2 раза больше ресурсов, чем один вызов.

Dim arr() As String = Split("1/200","/";)
str1 = arr(0)
str2 = arr(1)


Хоть в этом случае это некритично, но культура кодирования должна
быть.

Ответить

Номер ответа: 11
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #11 Добавлено: 16.04.07 18:57
Опа, даём бенчамарк на тестировании динамического строкового массива и двойного вызова Split ? :)))

Ответить

Номер ответа: 12
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #12
Добавлено: 17.04.07 01:23
Ффпиред :) Что-то мне подсказывает, что тупой VBшный компилятор не заоптимизирует такое.

Ответить

Номер ответа: 13
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #13 Добавлено: 18.04.07 03:43
эх...)) ну ок, я отожку бенчмарк
Private Sub Form_Load()
    Dim arr() As String, str1 As String, str2 As String, t As Single, i As Long
    Const TestCount As Long = 100000
    t = Timer
    For i = 1 To TestCount
        arr = Split("1/200", "/";)
        str1 = arr(0)
        str2 = arr(1)
    Next i
    MsgBox Timer - t
    t = Timer
    For i = 1 To TestCount
        str1 = Split("1/200", "/";)(0)
        str2 = Split("1/200", "/";)(1)
    Next i
    MsgBox Timer - t
    End
End Sub


Двойной вызов сплита проиграл :)

Ответить

Номер ответа: 14
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #14
Добавлено: 18.04.07 20:03
Цыфры, сыстра, цыфры! (с)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам