J'utilise également des compensations. text 1 thru 2 of "xyz"
est équivalent à items 1 thru 2 of "xyz" as string
.
set x to "First Last ([email protected])"
set pos to offset of " (" in x
{text 1 thru (pos - 1) of x, text (pos + 2) thru -2 of x}
Pour autant que je sache, you don't have to restore text item delimiters.
set x to "First Last ([email protected])"
set text item delimiters to {" (", ")"}
set {fullname, email} to text items 1 thru 2 of x
Si d'autres étaient à la recherche de la manipulation de chaînes en général, voici les méthodes de remplacement et le texte du fractionnement et des listes de rejoindre:
on replace(input, x, y)
set text item delimiters to x
set ti to text items of input
set text item delimiters to y
ti as text
end replace
on split(input, x)
if input does not contain x then return {input}
set text item delimiters to x
text items of input
end split
on join(input, x)
set text item delimiters to x
input as text
end join
comparaisons de chaînes Ignore la casse par défaut:
"A" is "a" -- true
"ab" starts with "A" -- true
considering case
"A" is "a" -- false
"ab" starts with "A" -- false
end considering
Renverser le texte:
reverse of items of "esrever" as text
Vous pouvez utiliser do shell script pour changer la casse du texte:
do shell script "printf %s " & quoted form of "aä" & " | LC_CTYPE=UTF-8 tr [:lower:] [:upper:]" without altering line endings
écho interprète de séquences d'échappement par défaut dans OS X de/bin/sh. Vous pouvez également utiliser shopt -u xpg_echo; echo -n
au lieu de printf %s
. LC_CTYPE=UTF-8
fait que les classes de caractères incluent des caractères non-ASCII. Si without altering line endings
est omis, les sauts de ligne sont remplacés par des retours chariot et un saut de ligne à la fin de la sortie est supprimé. Divise les chaînes autour de \ n, \ r et \ r \ n. Il ne supprime pas les délimiteurs.
paragraphs of ("a" & linefeed & "b" & return & "c" & linefeed)
-- {"a", "b", "c", ""}
La version en texte brut du presse-papiers utilise des fins de ligne CR. Il convertit les fins de ligne LF:
set text item delimiters to linefeed
(paragraphs of (get the clipboard as text)) as text
Unicode text
a été équivalent à text
et string
depuis 10.5:
Il n'y a plus de distinction entre Unicode et texte non-Unicode. Il y a exactement une classe de texte, nommée "text": c'est-à-dire, la classe de "foo" renvoie le texte.
Excellente solution. L'extraction de la partie nommée uniquement peut être simplifiée pour 'définir nameOnly sur le premier élément de texte de sourceAddress', évitant ainsi d'avoir besoin des instructions auxiliaires impliquant' addressParts'. – mklement0