A stringek olyan adattípusok, amelyek szöveges értéket képviselnek.
A Strings a Swiftben Character-ek gyűjteménye, amelyek maguk egy Unicode skalárértéket tartalmaznak.
Stringet string literál segítségével hozhatsz létre; a string literál olyan karaktersorozat, amelyet kettős idézőjelek (") zárnak közre.
Többsoros stringekhez hármas idézőjeleket (""") használhatsz.
let hello : String = "Hello, World!"
let poem : String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""
A Swift stringjei emellett az NSString osztály minden funkciójával is rendelkeznek, amelyet eredetileg az Apple Objective-C könyvtáraiban használtak.
A Character olyan adattípus, amely egyetlen Unicode skalárértéket tárol, amely egy vagy több Unicode kódpontból áll.
A Unicode skalárérték bármely Unicode-kód pont a U+0000 és U+D7FF közötti zárt tartományban, illetve a U+E000 és U+10FFFF közötti zárt tartományban.
let aChar : Character = "A"
A Swift képes kikövetkeztetni egy string literál típusát, és alapértelmezés szerint String-ként következteti ki.
Egy stringet explicit módon Character-ré nyilváníthatsz a Character típusannotációval, ami megköveteli, hogy az érték egyetlen karakter legyen.
let aString = "A"
let aChar: Character = "A"
print(type(of: aString)) // Prints String
print(type(of: aChar)) // Prints Character
// The following code will not compile
let badChar: Character = "Too many characters"
// Error: Cannot convert value of type 'String' to specified type 'Character'
A Swiftben a stringek a + operátorral fűzhetők össze.
A karaktereket nem lehet a + operátorral stringekhez fűzni anélkül, hogy előbb stringgé alakítanád a karaktert.
print("honey" + "comb")
// Prints "honeycomb"
Az append(_:) metódus módosítja a stringet úgy, hogy egy stringet vagy egy karaktert fűz a végére.
var greeting = "Hello"
let world = ", world"
let period: Character = "."
greeting.append(world)
print(greeting) // Prints "Hello, world"
greeting.append(period)
print(greeting) // Prints "Hello, world."
A string interpoláció olyan módja a String létrehozásának, amely különböző forrásokból, például változókból és kifejezésekből származó értékeken alapul. Ahhoz, hogy string interpolációval értéket illessz be egy stringbe, a kifejezést vagy értéket zárójelbe teszed, amelyet egy visszaperjel előz meg.
let radius = 5.0
let circle = "The area of a circle with radius \(radius) is \(Double.pi * radius * radius)"
print(circle) // Prints "The area of a circle with radius 5.0 is 78.53981633974483"
A stringeknek és a karaktereknek többféle tulajdonságuk van, amelyekkel információt kérdezhetsz le a stringről vagy a karakterről.
Íme néhány a leggyakoribb stringtulajdonságok közül, de az összes megtalálásához nézd meg a dokumentációt.
| Tulajdonság | Leírás | Példa |
|---|---|---|
isEmpty |
true-t ad vissza, ha a string üres |
"Hello".isEmpty equals false |
count |
A stringben lévő karakterek számát adja vissza | "Hello".count equals 5 |
Íme néhány a leggyakoribb karaktertulajdonságok közül, de az összes megtalálásához nézd meg a dokumentációt.
| Tulajdonság | Leírás | Példa |
|---|---|---|
isLowercase |
true-t ad vissza, ha a karakter kisbetűs |
"a".isLowercase equals true |
isUppercase |
true-t ad vissza, ha a karakter nagybetűs |
"A".isUppercase equals true |
isNumber |
true-t ad vissza, ha a karakter szám |
"1".isNumber equals true |
isWhitespace |
true-t ad vissza, ha a karakter whitespace |
" ".isWhitespace equals true |
Ha egy típust stringgé szeretnél alakítani, használhatod a String() kezdőértéket, amely számos típust elfogad, többek között Int-et, Double-t, Character-t és egyebeket.
let charX: Character = "x"
print(String(charX)) // Prints "x"
print(String(110)) // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"
A Swiftben néhány speciális karakter használható a stringekben.
| Érték | Leírás |
|---|---|
\0 |
Null karakter |
\\ |
Visszaperjel |
\t |
Vízszintes tabulátor |
\n |
Soremelés |
\r |
Kocsivissza |
\' |
Egyszeres idézőjel |
\" |
Kettős idézőjel |
\uFFFF |
Hexadecimális Unicode-karakter |
let quote : String = "\"Hello\", he said."
print(quote) // Prints "Hello", he said.
let unicode : Character = "\u{1F496}"
print(unicode) // Prints 💖
Ebben a feladatban olyan kódot írsz, amely segít egy táblákat gyártó cégnek egyedi üzeneteket készíteni a tábláira.
Definiáld a következő konstans stringeket, amelyeket a táblák létrehozásához fogsz használni:
birthday: Ez a "Birthday" értéket tároljavalentine: Ez a "Valentine's Day" értéket tároljaanniversary: Ez a "Anniversary" stringet tároljaDefiniáld a következő konstans karaktereket, amelyeket a táblák létrehozásához fogsz használni:
space: Ez a " " értéket tárolja (egyetlen szóköz)exclamation: Ez a "!" értéket tároljaValósítsd meg a buildSign(for:name:) függvényt, amely megkapja a for argumentumot, amelyben az első részfeladatban definiált három string egyike van, valamint a name argumentumot, amely egy string, és annak a személynek a nevét tartalmazza, akinek a tábla szól.
A tábla üzenetét összefűzéssel építsd fel, és ne felejtsd el újra felhasználni a már definiált konstansokat.
A függvény adja vissza a tábla üzenetét stringként.
buildSign(for: birthday, name: "Otto")
// returns "Happy Birthday Otto!"
buildSign(for: anniversary, name: "Valentina")
// returns "Happy Anniversary Valentina!"
Valósítsd meg a graduationFor(name:year:) függvényt, amely megkapja a name argumentumot, amely egy string, és annak a személynek a nevét tartalmazza, akinek a tábla szól, valamint a year argumentumot, amely egy egész szám, és a ballagás évét tartalmazza.
A tábla üzenetét template stringekkel építsd fel.
A függvény adja vissza a tábla üzenetét stringként.
graduationFor(name: "Padma", year: 2023)
// returns "Congratulations Padma!\nClass of 2023"
Valósítsd meg a costOf(sign:) függvényt, amely megkapja a sign argumentumot, amely egy string, és a tábla üzenetét tartalmazza.
A tábla alapára 20 a megadott pénznemben. Ezenfelül minden betű 2-be kerül (a szóközöket is beleszámítjuk a számításba).
A függvény adja vissza a tábla költségét egész számként.
costOf(sign: "Happy Birthday Grandma!")
// returns 66
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Swift nyelvet 35 fogalom116 feladat segítségével, valódi emberi mentorálással, mindez ingyen.