Буквенный или цифровой введен символ

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Буквенный или цифровой введен символ

Сообщение скалогрыз » 09.12.2014 07:52:46

(length(s)<1) ???? слишком неэффективно!
(length(s)<=0)

добавим паскализма!
Код: Выделить всё
function StartsAsDigit(s:string):boolean; inline;
begin
   result:=(length(s)>0) and TCharacter.IsDigit(s[1]);
end;
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Буквенный или цифровой введен символ

Сообщение pda » 09.12.2014 13:49:28

SSerge писал(а):кто больше?

Там в принципе просто есть функция IsDigit. Ещё есть isdigit в libc, работает только в unix, принимает ascii код символа.
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: Буквенный или цифровой введен символ

Сообщение SSerge » 09.12.2014 15:06:01

pda писал(а):Там в принципе просто есть функция IsDigit


Вот именно, что она есть в принципе.
Зато ее нет в официальном списке функций справочной системы fpc. Поиском через гугл по отношению этой функции в freepascal находится исключительно иноязычный срач по поводу того, как правильно применять in ['a'..'z'] с утверждением, что такой функции нет и не будет.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Буквенный или цифровой введен символ

Сообщение Ism » 09.12.2014 22:58:34

Если уж вобщем смотреть, то для utf8
1 Определяем длину символа UTF8CharacterLength , для не ascii это всегда больше 1
2 Если длина символа 1 байт, то работаем как и с ascii, в теме уже писали как
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Буквенный или цифровой введен символ

Сообщение pda » 09.12.2014 23:32:43

Ism писал(а):Если уж вобщем смотреть, то для utf8

Зачем? Нас же первый символ строки интересует. :)
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: Буквенный или цифровой введен символ

Сообщение bormant » 09.12.2014 23:33:01

Ism,
зачем? Не-ASCII символ не может начинаться с #0..#127, в том числе с '0'..'9', поэтому достаточно проверить первый байт, если там '0'..'9' в первом байте, то это точно цифра, незачем извлекать символ по правилам UTF8.
Аватара пользователя
bormant
постоялец
 
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 226

Рейтинг@Mail.ru