Сохранение десятичных точек в AppleScript при работе с ценами - PullRequest
0 голосов
/ 02 марта 2012

У меня огромный текстовый файл с ценами в каждой строке, встроенный в строку из 15 символов.

Пример: 1856 0200 8751285

В приведенном выше примерецена 2,00 $

У меня нет проблем с извлечением цены.Я использую Satimage Scripting Addition для добавления возможности регулярного выражения в AppleScript и использую код:

set findPrice to find text "[0-9]{15}" in theString with regexp, string result and all occurrences
set findPrice2 to characters 5 thru 8 of item 1 of findPrice as string
set findPrice3 to findPrice2 * 0.01

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

Как заставить AppleScript выводить цены, такие как 2 доллара США, в формате 2 доллара США?Кроме того, я не могу округлить цены, поэтому я не могу использовать команду округления.

Ответы [ 3 ]

0 голосов
/ 02 марта 2012

Попробуйте это ...

set startPrices to quoted form of POSIX path of ("" & (path to desktop) & "prices.txt")
set endPrices to do shell script "grep -E [0-9]{15} " & startPrices & " | sed -e s'/^....\\(....\\)......./\\1/' -e s'/^0/$/' -e s'/^[0-9]/$&/' -e s'/..$/.&/'"
0 голосов
/ 03 марта 2012

Чтобы избежать слишком длинных слов, вы можете просто вручную вставить десятичную дробь при получении фрагментов текста или использовать printf для форматирования вашей строки (что также избавит от лидирующихнули), например

set findPrice to "185602008751285"
tell findPrice to set findPrice2 to text 5 thru 8
set findPrice3 to (do shell script "printf '%.2f' " & (findPrice2 * 0.01))
0 голосов
/ 02 марта 2012

Здесь есть подпрограмма format_number: http://www.j -schell.de / node / 153 - это больше, чем нужно, в том числе тысячи разделителей и т. Д., Но вы можете возможно, просто используйте его «как есть», или, возможно, уменьшите его до необходимой вам функции десятичных знаков. Он также работает с разными локалями и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...