On-line: Andrey, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 5952
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 21:25. Заголовок: "911"


Есть ли функция в Harbour , что бы на строке состоящей только из цифр вернула .T. , если нет то .F. ?
Например
xxx("123456") // .T.
xxx("12W456") // .F.

PS
Понятно что можно сделать самопал , разобрать строку посимвольно и "каждый" проверить на Isdigit

Упс , тупанул ))
a:="1345"
? type(a) // "N"
a:="1a345"
? type(a) // "UE"


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 19 [только новые]





Пост N: 201
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.08.16 21:47. Заголовок: Немного не понял..


? Может val(a)>0 .and. (val(a)-int(val(a)))=0

самое простое empty(charrem("0123456789",a))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5953
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 21:51. Заголовок: petr707 пишет: ? Мо..


petr707 пишет:

 цитата:
? Может val(a)>0 .and. (val(a)-int(val(a)))=0


Как бы нет
a:="133e245"
? val(a)>0 .and. (val(a)-int(val(a)))==0 // .T.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5954
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 21:54. Заголовок: petr707 пишет: само..


petr707 пишет:

 цитата:
самое простое empty(charrem("0123456789",a))


Работает

Dima пишет:

 цитата:
a:="1345"
? type(a) // "N"
a:="1a345"
? type(a) // "UE"


Тоже работает


Сложный выбор однако . ))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5955
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 22:10. Заголовок: Пока пришел к выводу..


Пока пришел к выводу что Type(a)=="N" самое простое и верное решение и вернет TRUE если в строке одни цифры.
Еще есть у кого варианты ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 202
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.08.16 22:12. Заголовок: Не понял


type(a) - это нонсенс , это проверка наличия переменной <a> типа Public или Private
Причем тут числа ?!

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5956
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 22:20. Заголовок: petr707 пишет: type..


petr707 пишет:

 цитата:
type(a) - это нонсенс , это проверка наличия переменной <a> типа Public или Private
Причем тут числа ?!


А так ?
 
proc Main
local a
a:="133245"
? type(a) // "N"
a:="1ddd33245"
? type(a) // "UE"
return

Ведь работает.
Где я не прав ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 203
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.08.16 22:24. Заголовок: Полагаю, что нет, неправ.


Всякая селедка рыба, обратное неверно.
Совпадение частного случая не выводит правило.
Нужно доказательство(логика) а его не видно

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5957
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 22:36. Заголовок: petr707 пишет: сяка..


petr707 пишет:

 цитата:
Всякая селедка рыба, обратное неверно


То есть верное решение такое empty(charrem("0123456789",a) ну или разбор строки посимвольно , так ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 204
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.08.16 23:00. Заголовок: Если..


Если задача звучит именно так..
Есть ли функция в Harbour , что бы на строке состоящей только из цифр вернула .T. , если нет то .F. ?
то да.
Хотя вариант empty(..) допускает еще и пробелы
Более строгий len( charrem(..))=0

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5958
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 23:01. Заголовок: petr707 пишет: Есть..


petr707 пишет:

 цитата:
Есть ли функция в Harbour , что бы на строке состоящей только из цифр вернула .T. , если нет то .F. ?
то да.


Какая ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5959
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.08.16 23:05. Заголовок: petr707 я понял )) ..


petr707
я понял ))
мы тут занялись туфтологией.
сделаю разбор строки через FOR EACH c проверкой.
Спасибо .

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 205
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 09.08.16 23:07. Заголовок: Казуистика..


Патентный поиск не проводится, если цена вопроса меньше 10000$
Вам нужен ..рабочий результат.. или то, что ненужная функция .. есть или нет ?
И потом, можно добиться чтобы новую Вашу функцию включили в DISTRIB, разве нет ?
И тогда она сразу будет обладать свойством "Есть в Harbour"

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1242
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.08.16 23:23. Заголовок: «PROCEDURE main() ..


«
PROCEDURE main() 

LOCAL reg
LOCAL cText1 := "123456"
LOCAL cText2 := "123W45"
LOCAL cText3 := "12545679087 908798790879087"

reg := hb_regexcomp("[^\d\s]") // есть ли в строке cTextX что-то кроме цифр и пробелов
? hb_regexhas(reg,cText1) // нет
? hb_regexhas(reg,cText2) // да
? hb_regexhas(reg,cText3) // нет

reg := hb_regexcomp("[^\d]") // есть ли в строке cTextX что-то кроме цифр
? hb_regexhas(reg,cText1) // нет
? hb_regexhas(reg,cText2) // да
? hb_regexhas(reg,cText3) // да

reg := hb_regexcomp("[\d]") // есть ли в строке cTextX цифры
? hb_regexhas(reg,cText1) // да
? hb_regexhas(reg,cText2) // да
? hb_regexhas(reg,cText3) // да

reg := hb_regexcomp("[\d]{6}") // строка длиной 6 символов и состоит из цифр входит в cTextX
? hb_regexhas(reg,cText1) // да
? hb_regexhas(reg,cText2) // нет
? hb_regexhas(reg,cText3) // да

reg := hb_regexcomp("[\d]{7}") // строка длиной 7 символов и состоит из цифр входит в cTextX
? hb_regexhas(reg,cText1) // нет
? hb_regexhas(reg,cText2) // нет
? hb_regexhas(reg,cText3) // да

RETURN
»

Регулярные выражения - наше все А есть ли жизнь на Марсе, нет ли жизни на Марсе..

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 206
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 10.08.16 06:06. Заголовок: Очень красиво, класс, спасибо


Ни разу не было необходимости использовать

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5960
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.08.16 10:18. Заголовок: Остановился на такой..


Остановился на такой :)
 
Func _ISNUMS(cstr)
return !hb_regexhas(hb_regexcomp("[^\d]"),cstr)

Вернет TRUE если в строке только цифры

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1243
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.08.16 15:26. Заголовок: Dima пишет: Func ..


Dima пишет:

 цитата:

Func _ISNUMS(cstr)
return !hb_regexhas(hb_regexcomp("[^\d]"),cstr)



Если функция будет выполнятся в цикле, каждый раз будете терять время (м.б. и ничтожное) на повторной компиляции, а так - почему бы нет.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5961
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.08.16 15:32. Заголовок: Петр пишет: Если фу..


Петр пишет:

 цитата:
Если функция будет выполнятся в цикле


да в цикле , но он не большой.
загоняю в массив имена папок а затем ловлю из него те у которых цифры в названиях
папок не много , до сотни.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6141
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.11.16 15:23. Заголовок: Dima пишет: Func _..


Dima пишет:

 цитата:
Func _ISNUMS(cstr)
return !hb_regexhas(hb_regexcomp("[^\d]"),cstr)


Не пойму как ее модернизировать что бы ловила не только целые числа , но и дробные.
Где в качестве разделителя точка.
Есть у кого идеи ?

PS
Например.
Должно вернуть TRUE на таких числах 12345 или 123.5634564363 или 0.87268

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6142
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.11.16 15:41. Заголовок: вроде вот так "?..


вроде вот так
"[^\d][\.]?[^\d]"

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 44
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет