Page 1 of 1
Splitting a string
Posted: 2007-11-10 03:35:57
by Metafor
Hello all,
First of all, is it possible to split a string into an array ?
It's because I'm trying to extract X,Y from:
- button <randomX> <randomY> 2151 2150 1 0 2
... But I'm stuck, if anyone could help me. I'd appreciate !
Code: Select all
....
var line = ""
var x = ""
var y = ""
var a = 0
line = uo.LastGump('command', i)
if left(line, 6) == "button" then
uo.print("Button found... !")
## Trying to extract X value
a = a + 7
while NOT line[a] == " "
uo.print("Number: "+line[a])
## This part is not working...
x = str(x + line[a])
a = a + 1
end if
....
Posted: 2007-11-10 03:43:57
by Destruction
Possible, but not into array.
Function:
Code: Select all
; explode( string string, string pattern, number num )
; Destruction
Sub explode( string, pattern, num )
var i, counter = 0, entry = 0
for i=0 to strlen( string ) -1
if mid( string, i, strlen( pattern ) ) == pattern then
counter = counter + 1
if num == counter-1 then
return mid( string, entry, i-entry )
endif
entry = i + 1
endif
next
if entry == 0 then
return false
endif
return mid( string, entry, strlen(string)-entry )
endsub
Example:
Code: Select all
var str = "button <randomX> <randomY> 2151 2150 1 0 2"
uo.print( explode( str, " ", 0 ) )
uo.print( explode( str, " ", 1 ) )
uo.print( explode( str, " ", 2 ) )
uo.print( explode( str, " ", 3 ) )
uo.print( explode( str, " ", 4 ) )
uo.print( explode( str, " ", 5 ) )
uo.print( explode( str, " ", 6 ) )
uo.print( explode( str, " ", 7 ) )
Also i recommend u to see functions in this topic:
viewtopic.php?t=7379 This topic contains many simple scripts.
Sorry for my clumsy English.
Posted: 2007-11-10 03:56:40
by Metafor
Thank you very much, your english is good.

Posted: 2007-11-10 12:59:29
by Grin
И почему строчку в масв нельзя разложить?;)
логическая ошибка
Posted: 2007-11-10 15:57:38
by Destruction
Grin wrote:И почему строчку в масв нельзя разложить?;)
логическая ошибка
Неудобно строчку в массив.. Придётся массив в основной функции объявлять.. Не юзабельно вобщем.
А насчёт ошибки - не понял, поясни..
Metafor wrote:Thank you very much, your english is good.

Thank you too. May be you right.
Posted: 2007-11-11 01:53:11
by Grin
так и так придется объявлять масив, в даном случаи это 1 строчка (инициализация не нужна)
поповоду ошибки простой пример, утебя есть строка где разделитель стостоит из более одного символа допустим " : "
тоесть разделитель ашь из 3-х символов, имем строку "1 : 2 : 3"
есть ли смысл в опирации if mid("1 : 2 : 3", 6, 3) == " : " then ?
правельно нет;)
Posted: 2007-11-11 14:10:53
by Edred
Мдя, народ, у вас совсем крыша едет. Строка и есть массив, ничего никуда перезасовывать не надо. Где-то в ФАКе об этом было... Вот:
Обращение к отдельным буквам в строке - так же, как к эл-там массива:
переменная[номер_буквы]. Номер - от 0, в случае выхода за конец строки - ошибка.
Posted: 2007-11-11 17:18:44
by Grin
Edred речь идет о том что функция должна венуть масив слов...
Дест сказал что это не возможно, потом что это "проблемно". Ну и возник дискус... Не в тему ты в общем...
Posted: 2007-11-11 19:24:45
by Destruction
Grin wrote:так и так придется объявлять масив, в даном случаи это 1 строчка (инициализация не нужна)
поповоду ошибки простой пример, утебя есть строка где разделитель стостоит из более одного символа допустим " : "
тоесть разделитель ашь из 3-х символов, имем строку "1 : 2 : 3"
есть ли смысл в опирации if mid("1 : 2 : 3", 6, 3) == " : " then ?
правельно нет;)
Это не логическая ошибка, это первоначально задумывалось, что разделитель - 1 буква..
Нужно наверное подправить.. Лениво жутко, я эту "ошибку" уже полгода созерацаю

Grin wrote:Edred речь идет о том что функция должна венуть масив слов...
Дест сказал что это не возможно, потом что это "проблемно". Ну и возник дискус... Не в тему ты в общем...
Я сказал, что это не совсем юзабельно..
Вобщем прекратим дискуссию, я знаю, что я неправ, но ни в коем случае с этим не соглашусь

Posted: 2007-11-13 12:05:31
by Edred
Grin wrote:Не в тему ты в общем...
Вполне возможно. Лень было все читать...
