Splitting a string

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Metafor
Posts: 6
Joined: 2006-02-17 14:16:10

Splitting a string

Post 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
....
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post 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.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Metafor
Posts: 6
Joined: 2006-02-17 14:16:10

Post by Metafor »

Thank you very much, your english is good. :-)
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

И почему строчку в масв нельзя разложить?;)

Code: Select all

for i=0 to strlen( string ) -1
логическая ошибка
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Grin wrote:И почему строчку в масв нельзя разложить?;)

Code: Select all

for i=0 to strlen( string ) -1
логическая ошибка

Неудобно строчку в массив.. Придётся массив в основной функции объявлять.. Не юзабельно вобщем.

А насчёт ошибки - не понял, поясни..

Metafor wrote:Thank you very much, your english is good. :-)

Thank you too. May be you right.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

так и так придется объявлять масив, в даном случаи это 1 строчка (инициализация не нужна)

поповоду ошибки простой пример, утебя есть строка где разделитель стостоит из более одного символа допустим " : "
тоесть разделитель ашь из 3-х символов, имем строку "1 : 2 : 3"
есть ли смысл в опирации if mid("1 : 2 : 3", 6, 3) == " : " then ?
правельно нет;)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Мдя, народ, у вас совсем крыша едет. Строка и есть массив, ничего никуда перезасовывать не надо. Где-то в ФАКе об этом было... Вот:

Обращение к отдельным буквам в строке - так же, как к эл-там массива:
переменная[номер_буквы]. Номер - от 0, в случае выхода за конец строки - ошибка.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

Edred речь идет о том что функция должна венуть масив слов...
Дест сказал что это не возможно, потом что это "проблемно". Ну и возник дискус... Не в тему ты в общем...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Grin wrote:так и так придется объявлять масив, в даном случаи это 1 строчка (инициализация не нужна)

поповоду ошибки простой пример, утебя есть строка где разделитель стостоит из более одного символа допустим " : "
тоесть разделитель ашь из 3-х символов, имем строку "1 : 2 : 3"
есть ли смысл в опирации if mid("1 : 2 : 3", 6, 3) == " : " then ?
правельно нет;)

Это не логическая ошибка, это первоначально задумывалось, что разделитель - 1 буква..

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

Я сказал, что это не совсем юзабельно..

Вобщем прекратим дискуссию, я знаю, что я неправ, но ни в коем случае с этим не соглашусь :roll:
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Grin wrote:Не в тему ты в общем...


Вполне возможно. Лень было все читать... :oops:
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Post Reply