Страница: 1 |
Страница: 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 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-сайт:
Профиль | | #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
Чушь. Если не указывать явно тип, он по умолчанию 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-сайт:
Профиль | | #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)
Не пудрись напрасно:
myString = "1/200"
x = Split(myString, "/"(0)
y = Split(myString, "/"(1)
MsgBox x & y
Номер ответа: 10
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #10
Добавлено: 16.04.07 15:30
str2 = Split("1/200","/"(1)
Нууу... Я хоть и дотнетчик, но мне на такой код смотреть жутко
Два вызова метода отнмиут в 2 раза больше ресурсов, чем один вызов.
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-сайт:
Профиль | | #12
Добавлено: 17.04.07 01:23
Ффпиред Что-то мне подсказывает, что тупой VBшный компилятор не заоптимизирует такое.
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 18.04.07 03:43
эх...)) ну ок, я отожку бенчмарк
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-сайт:
Профиль | | #14
Добавлено: 18.04.07 20:03
Цыфры, сыстра, цыфры! (с)