Добавлен , не публикуется
Как в jass разбить строку по разделителям? Возможно есть функция, типо split(), как в других яп. А может надо писать свой костыль. Как такое можно реализовать?
0
16
7 лет назад
0
substring в помощь
нет, это скриптовый язык, здесь никаких удобств
0
10
7 лет назад
0
DracoL1ch:
substring в помощь
нет, это скриптовый язык, здесь никаких удобств
Единственное, что приходит в голову с substring, это резать строки от первого до второго вхождения нужного символа и так по кругу, но я даже не знаю как найти такое вхождение, получить его положение
0
16
7 лет назад
0
да, так и делают
я где-то в прошлом видел либу с реализацией indexOf и пары других функций, но не могу найти че-то
0
10
7 лет назад
0
DracoL1ch:
substring в помощь
нет, это скриптовый язык, здесь никаких удобств
А что насчёт препроцессоров? Там таких удобств нету? Или может там есть indexOf?
0
13
7 лет назад
Отредактирован NekoriDes
0
Morkoffka, они новых функций не добавляют. Иначе это уже были бы ФРЕЙМВОРКИ.
0
10
7 лет назад
0
NekoriDes:
Morkoffka, они новых функций не добавляют. Иначе это уже были бы ФРЕЙМВОРКИ.
Или библиотеки, но я ещё не видел масштабных фреймворков для jass
0
23
7 лет назад
0
а не проще циклом подобрать каждый 1 символ и проверять
взял с примера кода карта...
loop
            exitwhen i >= len
            
            set s = SubString(data, i, i + 1)
            
            if (step > 0 and s == " ") then
                // do nothing
            elseif (step == 0) then
                
                if (s == "^") then
                    set step = 1
                else
                    set desc = desc + s
                endif
            
            elseif (step == 1) then
            
                if (s == "^") then
                    set step = 3
                    set param = ""
                elseif (s == "=") then
                    set step = 2
                else
                    set param = param + s
                endif
                
            elseif (step == 2) then
            
                if (s == ";") then
                    call ParseParam(itm, StringCase(param, false), value[0])
                    
                    set param = ""
                    set value[0] = ""
                    set step = 1
                else
                    set value[0] = value[0] + s
                endif
                
            elseif (step == 3) then
            
                if (s == "=") then
                    set step = 4
                else
                    set param = param + s
                endif
                
            elseif (step == 4) then
            
                if (s == ";") then
                    set curVal = curVal + 1
                    
                    if (curVal >= 3) then
                        if (value[0] == "") then
                            set value[0] = "0"
                        elseif (value[1] == "") then
                            set value[0] = "0"
                      elseif (value[2] == "") then
                            set value[0] = "0"
                        endif
                        
                        call ParseBonusParam(itm, param, value[0], value[1], value[2])
                        
                        set step = 3
                        set curVal = 0
                        set value[0]=""
                        set value[1]=""
                        set value[2]=""
                        set param=""
                    endif
                    
                else
                    set value[curVal] = value[curVal] + s
                endif
                
            endif
                        
            set i = i + 1
        endloop
0
28
7 лет назад
Отредактирован nvc123
0
ну так напиши split сам
это ведь тупо цикл с поиском вхождения подстроки
тем про то как реализован split в гугле дофига написано
или глянь исходники split в других яп (джава например)
а если по 1 символу то это вообще изи т.к. простой перебор циклом
Чтобы оставить комментарий, пожалуйста, войдите на сайт.