Вытянуть из ника текст в [] (квадратных скобках)
#1

Вытянуть из ника текст в [] (квадратных скобках)
Например у игрока ник [Test]Player и как мне вытянуть Test
---
Пожалуйста пример) буду благодарен!
Reply
#2

pawn Код:
new part[MAX_PLAYER_NAME];
for (new i, coun = strlen(name), j = -1; i < coun; i++)
{
    if (j  > -1 && name[i] == ']') break;
    if (name[i] == '[')
    {
        j = 0;
        continue;
    }
    if (j > -1)
    {
        part[j++] = name[i];
    }
}
Reply
#3

Stepashka, спасибо конечно дал +) но можно поподробней) для меня это уже более сложно разобраться! Получается name[i] будет равна тексту в скобках? А если ник aa[Test]aa[Test] он только 1 скобки возьмёт (Ну так и надо в принцепи и что будет если ник [[test[test]] ?

p.s. Тёска)
Reply
#4

Вот что дал амерекос Vince

pawn Код:
new
    start,
    end,
    tag[24];

if((start = strfind(name, "[")) != -1 && (end = strfind(name, "]")) != -1)
{
    strmid(tag, name, start, end);
}
Reply
#5

pawn Код:
new part[MAX_PLAYER_NAME];
GetPlayerName(playerid,part,MAX_PLAYER_NAME);
new s,f;
s=strfind(part, "[", false);
if(s!=-1)
{
f=strfind(part, "]", false,s);
if(f==-1){part[0]=0;}
else{strmid(part, part, s, f+1);}
}
else {part[0]=0;}
В отличие от Стёпкиного варианта проще,короче,быстрее(используются нативные функции).
Reply
#6

Mutha_X, я так понимаю ты написал одно и тоже что и Vince (На 1 пост выше твоего)

p.s. Вот что и не думал где быстро отвечают
Reply
#7

Нет, сам.
Обрати внимание на способы использования strfind: у меня при поиске последнего символа используется 4 аргумент функции(определяет место старта поиска) + ищет по мере надобности, а не сразу оба, а потом идёт обработка.
У Винса есть недоработка в strmid(tag, name, start, end); end будет указывать место ДО ячейки нужного символа.
Reply
#8

Mutha_X, дал + буду тестить твой вариант!

и ещё а если ник [[test]]admin, из ника будет взято только [test?
Reply
#9

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
Нет, сам.
Обрати внимание на способы использования strfind: у меня при поиске последнего символа используется 4 аргумент функции(определяет место старта поиска) + ищет по мере надобности, а не сразу оба, а потом идёт обработка.
У Винса есть недоработка в strmid(tag, name, start, end); end будет указывать место ДО ячейки нужного символа.
такая проблема))
pawn Код:
new start, end, tag[MAX_PLAYER_NAME];
if ((start = strfind(name, "[", true)) != -1 && (end = strfind(name, "]", true, start)) != -1)
{
    strmid(tag, name, start+1, end-1);
}
кстати недоработка у вас обоих.

вот по поводу двойных скобок и их количества, тут уже сложней.

ЗЫ я уже писал, я не Стёпа, Стёпка и не Степан!
Reply
#10

Quote:
Originally Posted by CraftMan
Посмотреть сообщение
Mutha_X, дал + буду тестить твой вариант!

и ещё а если ник [[test]]admin, из ника будет взято только [test?
Высунет [[test]
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)