22 Сентября 2024, 13:30:07
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Проверка: число или нет
Проверка: число или нет
(Прочитано 8553 раз)
  [1]
Печать
WonderCat | * | Новичок | Сообщений: 12 | « 11 Августа 2008, 12:16:08 »
Проверка: число или нет |
0
Я делаю перевод текста в число используя value operator-text to real value (text). Но мне еще надо проверить, может ли текст быть переведен (число ли это). Как это сделать?
barmadjar | *** | Постоялец | Сообщений: 142 | «Ответ #1 29 Декабря 2009, 13:17:08 »
Re: Проверка: число или нет |
1
У меня вопрос похожий - как мне из текстовой строки выделить ту часть текста, в которой находится число?
Конкретный пример: в строке, описывающей путь к файлу нужно найти номер этого файла с целью перевода его потом в число, при этом надо учесть, что в этой строке могут попадаться другие цифры, то есть желательно просматривать часть строки, начиная не сначала ее, а с некоторого по счету символа.
barmadjar | *** | Постоялец | Сообщений: 142 | «Ответ #2 29 Декабря 2009, 15:58:28 »
Re: Проверка: число или нет |
2
Нашел решение сам Улыбающийся
Если кому-то интересно, на всякий случай приведу его здесь
Допустим, путь прописан так:
D:\Projects\Stas\Quest3d\KorFin_Reliefs\3dsMAXrelief\Побережье_3\Quest3D_Files\Scenes\Poberejie_Frag_2.cgr

В аттаче приведена схема, с помощью которой осуществляется эта задача.
С помощью Text Filter отсекается часть текста до нужной нам цифры.
В диалоговом окне Text Filter:
   в поле Column Separator задал знак подчеркивания, который стоит перед цифрой;
   в поле Column Number, насколько я понял, любая цифра >0
(если ноль, то находит первый знак подчеркивания с начала строки, в другом же случае - первый с конца)
   в поле Source отображается вся строка
   в поле Result - результат фильтрации
Далее при помощи Text Operator\ Replace Text отсекаем от предыдущего результата текст .cgr (или точнее меняем его на пустую текстовую строку)
Затем при помощи Value Operator\ Text to real value переводим полученную цифру в целое число.

Такой вот способ. Не знаю, насколько он оптимален, но по крайней мере поставленную задачу решил Улыбающийся

* Screenshot-1.jpg (149.04 Кб, 1169x874 - просмотрено 1530 раз.)
« Последнее редактирование: 29 Декабря 2009, 16:04:23 от barmadjar »
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #3 22 Мая 2010, 03:39:01 »
Re: Проверка: число или нет |
3
Есть более сложный и медленный способ, но в нем можно учесть некоторые не предвиденные ситуации.

Допустим, на входе имя файла, вроде 905.image.29izineta13.jpg
Нам нужно получить только последнее число.

Пишем функцию, в которой проверяем один символ на сходство с числом. В функции делаем два входа, первый - текущий символ, а второй - Нужные нам символы(в данном случае 0123456789). тип функции можно сделать "value", что бы она сразу возвращала true / false. Внутри функции в цикле сверяем поданный символ со списком допустимых, если он правильный, то возвращаем 1, в противном случае - 0.
Далее -
1.Отсекаем .jpg.
2.спрашиваем, сколько символов в имени файла осталось.
3.пробегаем в цикле по всему имени, сверяя каждый символ, используя нашу функцию, если число, то добавляем его в текстовый канал. При этом можно ставить метку - был ли предыдущий символ числом. Так же, при нахождении первого числа можно поставить значение о правильности имени в 1.
4.Тут вариант проверки - если предыдущий символ был числом, то его просто добавляем в текстовый канал, если нет, то перед ним ставим знак перехода на другую строчку.

Если ни одного числа в файле нет, то, например, не грузим и т.д.

В итоге должно получиться что то вроде того -

905
29
13

5.смотрим сколько строчек получилось и берем последнюю через текст-фильтр.

итог - 13

Условий проверки может быть много. все зависит от конкретного случая.
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Проверка: число или нет
Перейти в: