Доброго времени суток, вопрос следующий, как сделать проверку на цифры, т.е, если игрок введет только цифры, появится диалог, если не только цифры а и буквы, то продолжим действие.
Вид для печати
Доброго времени суток, вопрос следующий, как сделать проверку на цифры, т.е, если игрок введет только цифры, появится диалог, если не только цифры а и буквы, то продолжим действие.
думаю логика понятнаPHP код:
new types[3];
for(new i,d = strlen(inputtext); i < d; i++){
switch(inputtext[i]){
case 'a'..'z','A'..'Z','а'..'я','А'..'Я','ё','Ё': types[0]++;
case '0'..'9': types[1]++;
default: types[2];
}
}
if(types[0] && !types[1] && !types[2]){
//Действие если в тексте только буквы
}
if(!types[0] && types[1] && !types[2]){
//Действие если в тексте только цыфры
}
if(!types[0] && !types[1] && types[2]){
//Действие если в тексте только символы
}
PHP код:
static
types[2],
i,
c;
types[0] = types[1] = 0;
i = -1;
while((c = inputtext[++i]) != '\0')
{
switch (c)
{
case 'a'..'z','A'..'Z','а'..'я','А'..'Я','ё','Ё': types[0]++;
case '0'..'9': types[1]++;
}
}
if (!types[0] && types[1])
//только цифры
else if (types[0] && types[1])
//цифры и буквы
Не совсем понял зачем насиловать сегмент данных. Да и подсчёт символов там ни к чему, ибо задачи такой, судя по вопросу, не стоит.
Я бы сделал как-то так:
new i = -1, c, bool:isfind = false; while((c = inputtext[++i]) != '\0') { switch(c) { case '0'..'9': { continue; } default: { isfind = true; break; } } } if(isfind == false) { //только цифры } else { //цифры и буквы }
В данном "else" сработает даже если поставить хоть один символ, отличный от цифры (ограничивать пароль только буквами и цифрами, отбрасывая символы - не очень разумная затея. Если боишься SQL-инъекций, достаточно запретить использовать одинарную кавычку и обратный слэш)
Всем спасибо, можно закрывать.