1. Definición de cadena
let someString = "some string value"
2. Definición de cadena de varias líneas (""")
let quotation = """
有一个人前来买瓜。
"这瓜甜吗?"他问。
"""
No hay nueva línea después del """ anterior y del """ siguiente
//前一个"""前和后一个"""后无换行
let someString = "有个人。"
let someString = """
有个人。
"""
//此两个语句效果相同
Quiere lograr una nueva línea al escribir el código pero no después de la operación real: \
//在代码编写时换行而在实际运行后不换行
let someString = """
abcdefg\
hijklmn
"""
//实际输出:abcdefghijklmn
3. Caracteres especiales en cadenas.
(1) carácter de escape
\0 | carácter nulo |
\\ | barra invertida |
\ t | pestaña horizontal |
\norte | salto de línea |
\r | retorno de carro |
\" | Doble comillas |
\' | apóstrofe |
Para utilizar (""") en """, debes escribir al menos un carácter de escape \. Por ejemplo \""" o \"\"\"
(2) escalar Unicode
\u{24} | dos números hexadecimales |
\u{2665} | número hexadecimal de cuatro dígitos |
\u{nnn...} | 1~8 números hexadecimales |
4. Delimitador de caracteres extendido
Cuando hay \ pero no quieres escapar:
#"Line1 \nLine2"#
5. Inicialice una cadena vacía
var emptyString = "" //或
var emptyString = String()
//判断字符串是否为空:
if emptyString.isEmpty {
print("Empty!")
}
6. Mutabilidad de cadenas
var a = "a"
a += "b" //a = "ab"
let c = "c"
c += "d" //报错,常量字符串不可修改
7. Usando personajes
//通过for-in输出字符
for c in "Dog!"{
print(c)
}
/* 输出:
D
o
g
!
*/
//通过指定类型创建字符
let end: Character = "!"
//通过定义字符数组创建字符数组,再通过String(字符数组)方法创建字符串
let cat: [Character] = ["c", "a", "t"]
let catString = String(cat)
print(cat) //输出cat
8. Concatenar cadenas y caracteres
//1
let a = "a"
let b = "b"
var c = a + b
//2
var a = "a"
a += b
//3
let a: Character = "a"
b.append(a) //ba
9. Interpolación de cadenas
let a = 3
let message = "\(a) times 2.5 is \(Double(a) * 2,5)" //3 times 2.5 is 7.5
10. Índice de cadenas
let greeting = "Guten Tag!"
greeting[greeting.startIndex] //G
greeting[greeting.index( before: greeting.endIndex)] //!
greeting[greeting.index( after: greeting.startIndex)] //u
greeting[greeting.index( greeting.startIndex, offsetBy: 7)] //a
startIndex es el primer carácter; endIndex es el carácter después del último carácter.
El atributo de índices creará un carácter único que contiene todos los accesos al rango de índice.
for index in getting.indices{
print("\(greeting[index])", terminator:" ")
} //G u t e n T a g !
11. Inserción y eliminación
//插入
var h = "Hello"
h.insert("!", at: h.endIndex) //Hello!
//删除
//remove
h.remove( at: h.index(before: h.endIndex) ) //Hello
//removeSubrange
let range = h.startIndex ..< h.endIndex
h.removeSubrange(range) //参数为一个字符串范围
//运行结果:啥也没有
12. Subcadena
let g = "Hello,World!"
let index = g.firstIndex(of: ",") ?? g.endIndex
let beginning = g[..<index] //beginning为subString类型
let newString = String(beginning) //将subString类型转换为String类型
//短时间使用此子字符串用subString,长期使用需转换为String类型
print(newString) //Hello
13. Comparar cadenas
(1) igualdad de cadena/carácter
== !=
Igualdad estándar: tanto el significado lingüístico como la apariencia son iguales.
un == un | reflexividad |
a == b ⇒ b == a | simetría |
a == b && b == c ⇒ a == c | transitividad |
(2) igualdad de prefijo/sufijo
//都返回一个布尔值
scene.hasPrefix("Action 1") //有相同前缀"Action 1"
scene.hasSuffix("。") //有相同后缀"。"
14.representación utf8, representación utf16
dogString.utf8 //68 111 103 226
dogString.utf16 //68 111 103 8252
15. Representación escalar Unicode
Unicode: una representación única de 21 dígitos de un carácter.
dogString.unicodeScalars //D o g !