AppleScript: Як отримати кількість символів у файлі .rtf?


2

Я хотів би, щоб файл AppleScript .scpt визначав кількість символів у будь-якому файлі .rtf. Я не впевнений, що це стандартний для підрахунку символів, але я хочу, щоб кожен пробіл ("") також вважався одним символом.

Я хотів би, щоб сценарій виконав це без фактичного відкриття файлу в TextEdit.

Важливо відзначити, що це текстовий файл, а не простий текстовий файл (.txt). Цей факт ускладнює речі. Це не так просто, як відсікання заголовка багатофункціонального тексту, оскільки один .rtf-файл може містити декілька різних типів форматування з багатого тексту.

Який найкращий спосіб це зробити?

Відповіді:


2

Ви запитали: "Який найкращий спосіб це зробити?" і, хоча я не прийму таку рішучість, тим не менш, ось приклад з використанням do shell script і деякі утиліти командного рядка.

set theRichTextFile to quoted form of "/path/to/filename.rtf"
set theCharacterCount to do shell script "textutil -stdout -convert txt " & theRichTextFile & " | LANG=en_US.UTF-8 wc -m | sed 's/ //g'"

Зверніть увагу на це theRichTextFile повинна бути кодом POSIX.

Оновлення: за коментар від @ jackjr300, додано LANG=en_US.UTF-8 до команди.


2
Примітка: Locale не визначено в оболонці при використанні do shell script команда, Отже, wc Команда підраховує всі символи ASCII у будь-якому складеному символі. Приклад: файл RTF містить " Здравствуйте! "(російське слово),. \ t wc команда повернення 25 (Символи ASCII). Щоб отримати правильний номер, встановіть LANG до деякого lang .. з UTF-8 , подобається це : do shell script "textutil -stdout -convert txt '/path/of/someFile.rtf' | LANG=en_US.UTF-8 wc -m | sed 's/ //g'" - & gt; тепер wc команда повернення 13 (символів)
jackjr300
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.