Я копирую много исходного кода из разных проектов в другие, и мне всегда приходится менять одни и те же условия. Можно ли использовать яблочный скрипт, который проверяет текстовое содержимое буфера обмена и заменяет несколько ключевых слов? Я новичок в applescript, поэтому я не знаю, насколько мощным может быть applescript...
Редактировать содержимое буфера обмена с помощью applescript в os x
Ответы (2)
Это возможно с помощью get clipboard, set clipboard и разделителей текстовых элементов.
get the clipboard
set the clipboard to (replacement of "this text" by "that text" for the result)
on replacement of oldDelim by newDelim for sourceString
set oldTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to oldDelim
set strtoks to text items of sourceString
set text item delimiters of AppleScript to newDelim
set joinedString to strtoks as string
set text item delimiters of AppleScript to oldTIDs
joinedString
end replacement
Для более сложных манипуляций с текстом я бы просто вызвал сценарий оболочки. Вышеупомянутое становится:
do shell script "pbpaste | sed 's/this text/that text/g' | pbcopy"
person
Michael J. Barber
schedule
24.03.2011
большое спасибо за ваш быстрый ответ! скрипт работает нормально, но у меня есть куча дополнительных проблем: как я могу сохранить формат строк (в настоящее время он возвращается в виде обычного текста, каждый формат удален). Я также не мог заставить скрипт заменить более одной строки и работать непрерывно в фоновом режиме? Я попытался установить код get/set clipboard... между режимом ожидания и концом режима ожидания, но он просто работает в первый раз, когда я запускаю приложение (я сохранил его как приложение и проверил, что он остается открытым)
- person TabulaRasa; 24.03.2011
Не уверен, что понял, что вы хотите сделать. Я полагаю, вы хотите заменить несколько строк в содержимом буфера обмена, например: «PS3 стоит 200 долларов в Wallmart» на «XBox стоит 180 долларов в Wallmart». Это достигается следующим кодом:
get the clipboard
set the clipboard to (replacement of "PS3" by "XBox" for the result)
on replacement of oldDelim by newDelim for sourceString
set oldTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to oldDelim
set strtoks to text items of sourceString
set text item delimiters of AppleScript to newDelim
set joinedString to strtoks as string
set text item delimiters of AppleScript to oldTIDs
joinedString
end replacement
get the clipboard
set the clipboard to (replacement of "200" by "180" for the result)
Престижность Майклу Дж. Барберу за исходный код. Я практически ничего не знаю о кодировании. Я только что попробовал эту модификацию, она работала.
person
Kalle Kantola
schedule
07.05.2011