Перевести строку в число

Список разделов foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #1 Frou » 05.07.2009, 17:18

Как извлечь число из строковой переменной? Например, '15' в 15.
И еще, как проверить, что символ является цифрой?
Делаю так
Код: Выделить всё
$and($greater($ascii($substr(%filename%,2,2)),29),$greater($ascii(40,$substr(%filename%,2,2))))

Но $ascii не работает. Я предполагал, что это обратная функция к $char. Проверял на русских и латинских символах, так и не понял что эта функция должна делать. Help!
Frou
Автор темы
Репутация: -1
С нами: 16 лет 10 месяцев

Сообщение #2 evil » 05.07.2009, 18:47

2Frou
Озвучьте всю вашу задачу, для чего это понадобилось, какова цель?
Для примера, обозвал PERFORMER как 15, в скрипте прописал:
Код: Выделить всё
$add(%performer%,1)
и получил 16. Т.е. для того, чтобы делать арифметические операции не надо предварительно преобразовывать строку в число (тут всё строки).
evil M
Репутация: 67
С нами: 17 лет 11 месяцев

Сообщение #3 Frou » 05.07.2009, 20:38

Я хочу, чтобы треки с отсутствующим tracknumber "брали" свой номер из имени файла и в плейлисте соответствующе обрабатывались.

Сделал так, что проверяется, если в начале имени есть цифры, то значит рисуем в плейлисте исходя из этого фейкового tracknumber. Я использую конфиг Rialto как исходный, и там у него в зависимости от номера трека в плейлисте оторбражается по разному. Короче говоря, нужно для такого вот извлечения.

Сложность в том, что не знаешь, из скольки знаков будет состоять такой номерок.
Последний раз редактировалось Sp1ke 05.07.2009, 20:56, всего редактировалось 1 раз.
Frou
Автор темы
Репутация: -1
С нами: 16 лет 10 месяцев

Сообщение #4 evil » 05.07.2009, 21:02

Исходя из следующего о Arithmetic functions:
The functions in this section can be used to perform arithmetic on integer numbers. A string will be automatically converted to a number and vice versa. The conversion to a number uses the longest prefix of the string, that can be interpreted as number. Leading whitespace is ignored.

Example: "c3po" → 0, " -12" → -12, but "- 12" → 0
Можно задачу решить так:
Код: Выделить всё
$puts(track,$max(%track%,%filename%))
$ifgreater($get(track),0,$get(track),)
evil M
Репутация: 67
С нами: 17 лет 11 месяцев

Сообщение #5 Frou » 05.07.2009, 23:07

Всё! Идею понял.
Спасибо за помощь!
Frou
Автор темы
Репутация: -1
С нами: 16 лет 10 месяцев


Вернуться в Секреты foobar2000