life Jumb
GM Pro user
Репутация: 251
Offline
Пол:  Награды:  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](http://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![Третье место на HellRoom Jam #6 [Игра на конкурс] Третье место на HellRoom Jam #6 [Игра на конкурс]](http://forum.hellroom.ru/awards/a165f5ddc4c612e1a21d18124023e9e2_hellroom_jam_6_bronze.gif) ![2 место в конкурсе Адекватные игры #3 [Антиутопия] 2 место в конкурсе Адекватные игры #3 [Антиутопия]](http://forum.hellroom.ru/awards/ca82cba08329dee15caedce4672c7cd0_antiutopy_adequate3_silver.gif)
API: GameMaker Studio Pro
Деятельность: Программист
Сообщений: 1512
|
 |
« : Август 15, 2013, 18:05:21 » |
|
Несколько дополнительных скриптов для базовых действий со строками Автор: я string_pos_num(substr,str,num)Возвращает позицию строки substr в строке str аналогично string_pos Параметр num целое число отвечает за позицию какой именно по счету строки substr нужно возвратить Возвращает 0 если не встречается то-есть если количество подстрок substr меньше 0 /* arg0=substr arg1=str arg2=num */ var len ss r; len=string_length(argument0) ss=argument1 r=0
repeat(argument2) { if(string_pos(argument0,ss)=0){r=0 break} if(r>0){r+=len} r+=string_pos(argument0,ss) ss=string_delete(ss,1,string_pos(argument0,ss)+len) }
return(r) string_pos_num_pro(substr,str,num,pos1,pos2)Аналогично, но с указанием диапазона поиска подстрок, хотя позиция подстроки возвратится относительно всей строки /* arg0=substr arg1=str arg2=num arg3=pos1 arg4=pos2 */ var len ss r; len=string_length(argument0) ss=string_delete(argument1,argument4,string_length(argument1)-argument4) r=argument3 ss=string_delete(ss,1,argument3)
repeat(argument2) { if(string_pos(argument0,ss)=0){r=0 break} if(r>argument3){r+=len} r+=string_pos(argument0,ss) ss=string_delete(ss,1,string_pos(argument0,ss)+len) }
return(r) string_upper_pro(str,pos1,pos2)Возвращает строку str часть которой (начиная с pos1 и до pos2) написана заглавными буквами В отличии от стандартной функции скрипт работает с кириллицей и не взаимодействует с не буквенными символами Например: string_upper_pro(str,1,2) возвратит строку str написанную с заглавной буквы /* arg0=str arg1=pos1 arg2=pos2 */ var l k a; l=string_delete(argument0,argument2,string_length(argument0)-argument2+1) l=string_delete(l,1,argument1-1)
a=1 repeat(string_length(l)) { k=string_copy(l,a,1) if((ord(k)>96 and ord(k)<123) or (ord(k)>223 and ord(k)<256)) { k=chr(ord(k)-32) l=string_delete(l,a,1) l=string_insert(k,l,a) } a+=1 } k=string_delete(argument0,argument1,string_length(l)) l=string_insert(l,k,argument1)
return (l) string_lower_pro(str,pos1,pos2)Аналогично меняет на маленькие(прописные) буквы /* arg0=str arg1=pos1 arg2=pos2 */ var l k a; l=string_delete(argument0,argument2,string_length(argument0)-argument2+1) l=string_delete(l,1,argument1-1)
a=1 repeat(string_length(l)) { k=string_copy(l,a,1) if((ord(k)>64 and ord(k)<91) or (ord(k)>191 and ord(k)<224)) { k=chr(ord(k)+32) l=string_delete(l,a,1) l=string_insert(k,l,a) } a+=1 } k=string_delete(argument0,argument1,string_length(l)) l=string_insert(l,k,argument1)
return (l) string_replace_num(str,substr,newstr,num)Аналогично string_replace только заменится не первая попавшаяся строка substr, а встретившаяся в num раз (аналогично string_pos_num) /* arg0=str arg1=substr arg2=newstr arg3=num */ var len ss r; len=string_length(argument1) ss=argument0 r=0 repeat(argument3) { if(string_pos(argument1,ss)=0){r=0 break} if(r>0){r+=len} r+=string_pos(argument1,ss) ss=string_delete(ss,1,string_pos(argument1,ss)+len) } if(r=0){return(argument0)} else { ss=string_delete(argument0,r,len) ss=string_insert(argument2,ss,r) return(ss) } string_replace_num_pro(str,substr,newstr,num,pos1,pos2)Аналогично с указанием диапазона /* arg0=str arg1=substr arg2=newstr arg3=num arg4=pos1 arg5=pos2 */ var len ss r; len=string_length(argument1) ss=string_delete(argument0,argument5,string_length(argument0)-argument5) r=argument4 ss=string_delete(ss,1,argument4)
repeat(argument3) { if(string_pos(argument1,ss)=0){r=0 break} if(r>argument4){r+=len} r+=string_pos(argument1,ss) ss=string_delete(ss,1,string_pos(argument1,ss)+len) }
if(r=0){return(argument0)} else { ss=string_delete(argument0,r,len) ss=string_insert(argument2,ss,r) return(ss) } string_replace_all_pro(str,substr,newstr,pos1,pos2)Аналогично string_replace_all (заменяет все встретившиеся подстроки) но с указанием диапазона /* arg0=str arg1=substr arg2=newstr arg3=pos1 arg4=pos2 */ var ss len ts; ss=string_delete(argument0,argument4,string_length(argument0)-argument4+1) ss=string_delete(ss,1,argument3-1) len=string_length(ss) ss=string_replace_all(ss,argument1,argument2) ts=string_delete(argument0,argument3,len) ts=string_insert(ss,ts,argument3) return(ts) string_count_pro(substr,str,pos1,pos2)Аналогично string_count (возвращает количество встретившихся подстрок) но с указанием диапазона /* arg0=substr arg1=str arg2=pos1 arg3=pos2 */ var ss; ss=string_delete(argument1,argument3,string_length(argument1)-argument3+1) ss=string_delete(ss,1,argument2-1) return(string_count(argument0,ss)) string_revers(str)Наверное бесполезный скрипт но все-же... Скрипт возвращает строку str написанною задом наперед //arg0=str var ss a; ss='' a=1 repeat(string_length(argument0)) { ss=string_insert(string_copy(argument0,a,1),ss,1) a+=1 } return (ss) string_text(str,symb)Возвращает строку str с расставленными на ней символами сноса (#), можно сказать формирует строки Параметр symb минимальное количество символов в строке Строка может быть длиннее до 5 символов чтобы сохранить форму слова, иначе слово разобьется символом переноса (-) Перенос произойдет после гласной что в большинстве соответствует окончанию слога //arg0=str //arg1=symb var ss t sn brm a stat; ss=argument0 sn='' while (string_length(ss)>argument1) { t=string_pos(' ',string_delete(ss,1,argument1)) if(t=0){t=string_length(string_delete(ss,1,argument1))} if(t>5){//число допустимых символов для сохранения формы слова (поменяйте если нужно) t=argument1 brm=string_delete(ss,1,t) a=1 stat=0 repeat(9) { switch (string_char_at(brm,a)) { case 'а': stat=1 case 'е': stat=1 case 'ё': stat=1 case 'и': stat=1 case 'о': stat=1 case 'у': stat=1 case 'ы': stat=1 case 'э': stat=1 case 'ю': stat=1 case 'я': stat=1 case 'a': stat=1 case 'e': stat=1 case 'i': stat=1 case 'o': stat=1 case 'u': stat=1 case 'y': stat=1 } if(stat=1){t+=a break} a+=1 } sn+=string_copy(ss,1,t)+'-#' }else{ t=t+argument1 sn+=string_copy(ss,1,t)+'#' } ss=string_delete(ss,1,t) } if(ss!=''){sn+=ss} return(sn) P.S возможно кому-то нужно chr(33) = ! chr(34) = " chr(35) = # chr(36) = $ chr(37) = % chr(38) = & chr(39) = ' chr(40) = ( chr(41) = ) chr(42) = * chr(43) = + chr(44) = , chr(45) = - chr(46) = . chr(47) = / chr(48) = 0 chr(49) = 1 chr(50) = 2 chr(51) = 3 chr(52) = 4 chr(53) = 5 chr(54) = 6 chr(55) = 7 chr(56) = 8 chr(57) = 9 chr(58) = : chr(59) = ; chr(60) = < chr(61) = = chr(62) = > chr(63) = ? chr(64) = @ chr(65) = A chr(66) = B chr(67) = C chr(68) = D chr(69) = E chr(70) = F chr(71) = G chr(72) = H chr(73) = I chr(74) = J chr(75) = K chr(76) = L chr(77) = M chr(78) = N chr(79) = O chr(80) = P chr(81) = Q chr(82) = R chr(83) = S chr(84) = T chr(85) = U chr(86) = V chr(87) = W chr(88) = X chr(89) = Y chr(90) = Z chr(91) = [ chr(92) = \ chr(93) = ] chr(94) = ^ chr(95) = _ chr(96) = ` chr(97) = a chr(98) = b chr(99) = c chr(100) = d chr(101) = e chr(102) = f chr(103) = g chr(104) = h chr(105) = i chr(106) = j chr(107) = k chr(108) = l chr(109) = m chr(110) = n chr(111) = o chr(112) = p chr(113) = q chr(114) = r chr(115) = s chr(116) = t chr(117) = u chr(118) = v chr(119) = w chr(120) = x chr(121) = y chr(122) = z chr(123) = { chr(124) = | chr(125) = } chr(126) = ~ chr(127) = chr(128) = Ђ chr(129) = Ѓ chr(130) = ‚ chr(131) = ѓ chr(132) = „ chr(133) = … chr(134) = † chr(135) = ‡ chr(136) = € chr(137) = ‰ chr(138) = Љ chr(139) = ‹ chr(140) = Њ chr(141) = Ќ chr(142) = Ћ chr(143) = Џ chr(144) = ђ chr(145) = ‘ chr(146) = ’ chr(147) = “ chr(148) = ” chr(149) = • chr(150) = – chr(151) = — chr(152) = ? chr(153) = ™ chr(154) = љ chr(155) = › chr(156) = њ chr(157) = ќ chr(158) = ћ chr(159) = џ chr(160) = chr(161) = Ў chr(162) = ў chr(163) = Ј chr(164) = ¤ chr(165) = Ґ chr(166) = ¦ chr(167) = § chr(168) = Ё chr(169) = © chr(170) = Є chr(171) = « chr(172) = ¬ chr(173) = chr(174) = ® chr(175) = Ї chr(176) = ° chr(177) = ± chr(178) = І chr(179) = і chr(180) = ґ chr(181) = µ chr(182) = ¶ chr(183) = · chr(184) = ё chr(185) = № chr(186) = є chr(187) = » chr(188) = ј chr(189) = Ѕ chr(190) = ѕ chr(191) = ї chr(192) = А chr(193) = Б chr(194) = В chr(195) = Г chr(196) = Д chr(197) = Е chr(198) = Ж chr(199) = З chr(200) = И chr(201) = Й chr(202) = К chr(203) = Л chr(204) = М chr(205) = Н chr(206) = О chr(207) = П chr(208) = Р chr(209) = С chr(210) = Т chr(211) = У chr(212) = Ф chr(213) = Х chr(214) = Ц chr(215) = Ч chr(216) = Ш chr(217) = Щ chr(218) = Ъ chr(219) = Ы chr(220) = Ь chr(221) = Э chr(222) = Ю chr(223) = Я chr(224) = а chr(225) = б chr(226) = в chr(227) = г chr(228) = д chr(229) = е chr(230) = ж chr(231) = з chr(232) = и chr(233) = й chr(234) = к chr(235) = л chr(236) = м chr(237) = н chr(238) = о chr(239) = п chr(240) = р chr(241) = с chr(242) = т chr(243) = у chr(244) = ф chr(245) = х chr(246) = ц chr(247) = ч chr(248) = ш chr(249) = щ chr(250) = ъ chr(251) = ы chr(252) = ь chr(253) = э chr(254) = ю chr(255) = я
|