words of...
против text items of...
words of...
функционирует независимо от text item delimiters
, поэтому всегда будет разбивать строку одинаково.
text item delimiters
позволяет указать одну или несколько фраз для разделения строки на список text items
. Он также определяет, как список text items
объединяется вместе, поэтому будет иметь значение в любом случае, когда объект list
приводится в объект text
(или string
).
Чтобы разбить строку при каждом появлении пробела и только пробела:
set enterDomains to "alloresto.fr eat.ch eatnow.com.au just-eat.ca just-eat.co.uk"
set my text item delimiters to space
set theResults to text items in enterDomains
--> {"alloresto.fr eat.ch", "eatnow.com.au just-eat.ca", "just-eat.co.uk"}
Затем, чтобы объединить этот список text items
в строку, ограниченную запятая:
# ...Cont'd from the previous code block
set my text item delimiters to ", "
return theResults as text
--> "alloresto.fr eat.ch, eatnow.com.au just-eat.ca, just-eat.co.uk"
text item delimiters
в более общем смысле
Как я уже говорил выше, text item delimiters
может фактически быть установлен в список из нескольких элементов, вместо только одного символа или фразы. Это приводит к разделению строки при каждом появлении каждого элемента в указанном вами списке text item delimiters
, например,
set input to "The quick brown fox jumps over the lazy dog."
set my text item delimiters to {"i", space, "fox"}
get the text items of the input
--> {"The", "qu", "ck", "brown", "", "", "jumps", "over", "the", "lazy", "dog."}
Порядок разделителей здесь не имеет значения, поскольку строка будет разделена с использованием каждого разделитель действует одновременно.
Однако, при объединении list
обратно в text
объект, только первый разделитель используется для склеивания text items
вместе , В этом случае это будет "i"
:
# ...Cont'd from the previous code block
# result: {"The", "qu", "ck", "brown", "", "", "jumps", "over", "the", "lazy", "dog."}
return the result as text
--> "Theiquickibrowniiijumpsioveritheilazyidog."
Обратите внимание, что при разбиении строки каждое вхождение разделителя удаляется из строки; когда он соединяется, первый разделитель вставляется только между каждым фрагментом текста. Это фактически замена битов текста чем-то другим.
Замена текста с использованием text item delimiters
(введение)
В вашем конкретном случае c ваша задача может суммировать как необходимость заменить пробелы в вашей строке запятыми. Таким образом, мы можем сделать это за один ход, установив text item delimiters
таким образом, чтобы символы пробела удалялись, а ", "
вставлялось во время конкатенации:
set enterDomains to "alloresto.fr eat.ch eatnow.com.au just-eat.ca just-eat.co.uk"
set my text item delimiters to {", ", space}
return the text items of enterDomains as text
--> "alloresto.fr eat.ch, eatnow.com.au just-eat.ca, just-eat.co.uk"
Существуют и другие характеристики text item delimiters
о котором я говорил в других ответах о переполнении стека, которые вы можете свободно искать. Но для подавляющего большинства случаев использования приведенная выше информация является наиболее актуальной.
AppleScript-Obj C
... потому что я видел, как вы используете stringValue()
и ссылаясь на окно .xib
, я быстро предоставлю вам эквивалент AppleScriptObj C для некоторых из указанных выше сценариев ios.
Как я уверен, вы знаете, все примеры будут работать только в том случае, если скрипт, в котором они появляются, имеет следующие исходные строки кода:
use framework "Foundation"
# use scripting additions -- if Standard Additions are needed
property this : a reference to the current application
property NSArray : a reference to NSArray of this
property NSString : a reference to NSString of this
Я буду использовать объявление-назначение для enterDomains
в вашем коде в качестве отправной точки, но вместо того, чтобы приводить его к text
, я оставлю его как объект ссылки на какао, возвращенный stringValue()
(--
комментирует приведение):
set enterDomains to myTextField's stringValue() -- as text
Следовательно, enterDomains
теперь содержит экземпляр объекта значения класса NSString
. Итак:
Разделение строки:
set theResults to enterDomains's componentsSeparatedByString:space
Присоединение к списку строк:
theResults's componentsJoinedByString:", "
Замена каждого пробела запятой:
my TextField's stringValue()'s stringByReplacingOccurrencesOfString:space withString:", "
return the result as text
См. Документацию Apple по классу NSString
для больше вещей.