Инфо из string.inc:
/* Breaks a string into two halves, by token.
See strbreak() for doing this with parameters.
Example:
str1[] = This *is*some text
strtok(str1, left, 24, right, 24, '*')
left will be "This "
Right will be "is*some text"
If you use trimSpaces, all spaces are trimmed from Left.
*/
native strtok(const text[], Left[], leftLen, Right[], rightLen, token=' ', trimSpaces=0);
Синтаксис:
strtok(const text[], Left[], leftLen, Right[], rightLen, token=' ', trimSpaces=0);
- const text[] - Массив или текст для обработки.
- Left[] - Массив для записи левой части текста.
- leftLen - Длина массива левой части.
- Right[] - Массив для записи правой части текста.
- rightLen - Длина массива правой части.
- token=' ' - Символ до которого отсекается левая часть
- trimSpaces=0 - Если поставить 1, то разделителем будет так же первый найденный пробел.
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[string.inc] strtok"
#define VERSION "0.1"
#define AUTHOR "Mon[str] & Admin"
public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("strtok_text","test")
}
public test(id){
//текст для пробы
new szString[] = "Hellow! My Name Is Mon[str]"
//Массивы для записи левой и правой части
new szArg1[10], szArg2[25]
//Вызываем функцию
//'!' восклицательный знак и есть маркер(метка) для разделения
strtok(szString, szArg1, charsmax(szArg1), szArg2, charsmax(szArg2), '!')
//Вывод в консоль сервера 2 подстроки
server_print("^nText[left]:%s", szArg1)
server_print("Text[right]%s^n", szArg2)
}
Описание:
При введение в консоль сервера команды strtok_text, сервер выдаст разделенную строку Hellow! My Name Is Mon[str]
strtok_text
Text[left]:Hellow
Text[right] My Name Is Mon[str]
Text[left]:Hellow
Text[right] My Name Is Mon[str]
Обратите внимание что сам символ для разделения не появляется ни в одной из строк.
А во второй строке появляется пробел в начале строки.