A string szöveges adatot képvisel.
A Swiftben a String Character értékek rendezett gyűjteménye, ahol minden karakter egy Unicode-karaktert képvisel.
Stringet string literál segítségével hozol létre; a string literál olyan karaktersorozat, amelyet kettős idézőjelek (") zárnak közre.
Többsoros stringekhez három kettős idézőjelet (""") használj:
let hello: String = "Hello, World!"
let poem: String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""
A Swift stringjei zökkenőmentesen kapcsolódnak a Foundation keretrendszer NSString osztályához, és hozzáférést biztosítanak a szövegfeldolgozás széles körű lehetőségeihez.
A Character egyetlen kiterjesztett grafémafürtöt képvisel, azaz egy ember által olvasható karaktert, amely egy vagy több Unicode skalárértékből áll.
A Unicode skalárérték egy 21 bites kódpont 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"
Amikor string literált írsz, a Swift automatikusan String-ként következteti ki a típusát.
Ahhoz, hogy egyetlen karaktert Character-ként tárolj, explicit típusannotációt kell megadnod:
let aString = "A" // Inferred as String
let aChar: Character = "A" // Explicitly typed as Character
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 stringeket az összeadás operátorral (+) fűzheted össze:
print("honey" + "comb")
// Prints "honeycomb"
Egy Character-t közvetlenül nem fűzhetsz String-hez a + operátorral anélkül, hogy előbb stringgé alakítanád a karaktert.
A append(_:) metódussal azonban közvetlenül egy módosítható stringhez fűzhetsz egy stringet vagy egy karaktert:
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ó segítségével úgy hozhatsz létre stringet, hogy konstansokat, változókat, literálokat és kifejezéseket ágyazol be string literálokba.
Minden kifejezést zárójelbe teszel, 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öbb tulajdonságuk is van, amelyekkel megvizsgálhatod a tartalmukat.
Íme néhány a leggyakoribb stringtulajdonságok közül:
| Tulajdonság | Leírás | Példa |
|---|---|---|
isEmpty |
true-t ad vissza, ha a stringben nincsenek karakterek |
"Hello".isEmpty értéke false
|
count |
A stringben lévő karakterek számát adja vissza |
"Hello".count értéke 5
|
A tulajdonságok teljes listájához nézd meg az Apple String dokumentációját.
Íme néhány a leggyakoribb karaktertulajdonságok közül:
| Tulajdonság | Leírás | Példa |
|---|---|---|
isLowercase |
true-t ad vissza, ha a karakter kisbetűs |
"a".isLowercase értéke true
|
isUppercase |
true-t ad vissza, ha a karakter nagybetűs |
"A".isUppercase értéke true
|
isNumber |
true-t ad vissza, ha a karakter számjegy |
"1".isNumber értéke true
|
isWhitespace |
true-t ad vissza, ha a karakter whitespace |
" ".isWhitespace értéke true
|
A tulajdonságok teljes listájához nézd meg az Apple Character dokumentációját.
Más típusokat a String(_:) kezdőértékkel alakíthatsz stringgé, amely támogatja az olyan beépített típusokat, mint az Int, a Double és a Character:
let charX: Character = "x"
print(String(charX)) // Prints "x"
print(String(110)) // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"
A Swift string literáljai több escape szekvenciát is támogatnak a speciális karakterekhez:
| Szekvencia | Leírás |
|---|---|
\0 |
Null karakter |
\\ |
Visszaperjel |
\t |
Vízszintes tabulátor |
\n |
Soremelés (újsor) |
\r |
Kocsivissza |
\' |
Egyszeres idézőjel |
\" |
Kettős idézőjel |
\u{n} |
Tetszőleges Unicode skalár (hexadecimális) |
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.