AppleScript для поиска и замены наборов строк в выбранном файле - PullRequest
3 голосов
/ 11 сентября 2011

Я хочу использовать AppleScript для поиска и замены текста в выбранном документе. Текст, который я хочу заменить, всегда будет одним и тем же, поэтому я хочу установить некоторые предопределенные переменные для этой строки, выполнить поиск выбранного документа для этой строки и заменить его другой предопределенной строкой. Я хочу повторить этот процесс поиска и замены примерно 4 раза (каждый раз ища строковые переменные) для этого одного документа. После этого я хочу автоматически сохранить измененный документ.

Может кто-нибудь предоставить мне простой скрипт для этого? это то, что я до сих пор ...

tell application "Finder"
    set theFile to (open for access (choose file with prompt "Select a file to read:"))
    set txt to (read theFile for (get theFile))
end tell

on replaceText(find, replace, subject)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to find
set subject to text items of subject

set text item delimiters of AppleScript to replace
set subject to "" & subject
set text item delimiters of AppleScript to prevTIDs

return subject
end replaceText

get replaceText("lorem", "ipsum", txt)

проблема в том, что он не читает все содержимое файла (.html). абзаца Lorem Ipsum это только чтение "Ipsum Ipsum Dolor Sit Amet, Концертер Adipisicing Elit, Sed Do Eius" я попытался использовать eof в (получить theFile), но это не работает либо

1 Ответ

3 голосов
/ 11 сентября 2011

Да. :)

set the search_document to (choose file of type "TEXT")
replaceText("whatever you want to search for", "whatever you want to replace with", search_document)

on replaceText(search_string, replacement_text, this_document)
    tell application "TextEdit"
        open this_document
        set AppleScript's text item delimiters to the search_string
        set this_text to the text of the front document as list
        set AppleScript's text item delimiters to the replacement_text
        set the text of the front document to (this_text as string)
        close this_document saving yes
    end tell
end replaceText

Быстрое предупреждение об этом скрипте. Если вы должны были заменить каждое вхождение слова one словом two в документе, содержащем эту строку ...

If someone added one plus one, what would be the result?

... это был бы ваш результат ...

If sometwo added two plus two, what would be the result?

Кроме этого, беспокоиться не о чем.

Удачного кодирования! :)

...