Вы можете использовать удобную функцию под названием AppleScript's text item delimiters
, которая позволяет разбивать (или «анализировать» на компьютерном жаргоне) текст на сегменты, а затем извлекать данные из этих сегментов. Они являются разделителями текстовых элементов в куске текста. Простой пример:
set prevTIDs to AppleScript's text item delimiters
set theString to "Don't-eat-the-yellow-snow"
set AppleScript's text item delimiters to "-" --tell AppleScript to break up strings at each occurrence of a hyphen '-' in a given string
set these_items to every text item of theString
//--> {"Don't", "eat", "the", "yellow", "snow"}
set AppleScript's text item delimiters to prevTIDs
return these_items
При работе с разделителями текстовых элементов всегда рекомендуется восстанавливать исходные разделители; как только вы измените разделители, они будут глобально влиять на работающую среду, пока процесс не будет закрыт и перезапущен.
Другое использование разделителей текстовых элементов - замена слов или символов в заданной строке:
set prevTIDs to AppleScript's text item delimiters
set theString to "Don't eat the yellow snow"
set AppleScript's text item delimiters to "yellow" --the word you want to replace
set temp to every text item of theString
//--> {"Don't eat the", "snow"}
set AppleScript's text item delimiters to "pink" --the replacement word
set theString to temp as string
set AppleScript's text item delimiters to prevTIDs
return theString
//--> "Don't eat the pink snow"
Однако обратите внимание, что это заменяет каждое вхождение слова «желтый». Причина, по которой я это говорю, заключается в следующем:
If someone added one plus one, what would be the result?
Если вы хотите заменить слово «один» словом «два», вы должны быть уверены, что перед «двумя» ставите пробел при создании нового разделителя, иначе полученная строка будет выглядеть следующим образом:
If some<b>two</b> added two plus two, what would be the result?
В основном вы пытаетесь заменить пустые строки запятыми. Все, что вам нужно сделать, это выполнить следующие простые шаги, чтобы сделать это:
- Создать переменную для хранения текущих разделителей в
- Создать переменную для хранения вашей строки в
- Измените разделитель на пустую строку
""
- Привести вашу строку в список (т.е.
set the list to every text item of yourString
)
- Измените разделитель на запятую
,
- Привести ваш вновь созданный список обратно в строку (т.е.
set yourString to list as string
)
- Восстановить старые разделители
return
ваша строка
Полученный код:
set prevTIDs to AppleScript's text item delimtiers
set myString to "0123456789"
set AppleScript's text item delimiters to ""
set the_list to every text item of myString
set AppleScript's text item delimiters to ","
set myString to the_list as string
set AppleScript's text item delimiters to prevTIDs
return myString
Удачного кодирования! :)