Skip to content

Instantly share code, notes, and snippets.

@brbsh
Last active December 17, 2015 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brbsh/5584028 to your computer and use it in GitHub Desktop.
Save brbsh/5584028 to your computer and use it in GitHub Desktop.
PAWN char deleting functions
/*
Функция для вырезания символов из строки
chrdel(string[], character, repeating)
Аргументы:
string[] - строка назначения
character - символ, который нужно вырезать
repeating (true/false) - если true, вырежет все символы, иначе первый попавшийся
Возвращает:
-1 - Возникла ошибка (строка пуста/введен неверный символ)
Иначе вернет количество вырезанных символов
*/
stock chrdel(string[], character, bool:repeating = true)
{
if((string[0] <= 3) || !(' ' <= character <= 255)) return -1;
new rt;
for(new i; string[i]; i++)
{
if(string[i] == character)
{
if(!repeating)
{
strdel(string, i, (i + 1));
return 1;
}
strdel(string, i, (i + 1));
rt++;
}
}
return rt;
}
/*
Функция для вырезания группы символов из строки
chrdel_ex(string[], bool:repeating, ...)
Аргументы:
string[] - строка назначения
repeating (true/false) - если true, вырежет все символы, иначе первый попавшийся
... - символы, которые нужно вырезать, через запятую
Возвращает:
-1 - Возникла ошибка (строка пуста/введен неверный символ/большое кол-во аргументов)
Иначе вернет количество вырезанных символов
*/
stock chrdel_ex(string[], bool:repeating, ...)
{
new args;
if((string[0] <= '\1') || ((args = numargs()) == 2)) return -1;
new rt;
for(new i; string[i]; i++)
{
for(new j = 2; j != args; j++)
{
if(string[i] == getarg(j))
{
if(!repeating)
{
strdel(string, i, (i + 1));
return 1;
}
strdel(string, i, (i + 1));
rt++;
}
}
}
return rt;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment