//一. 字符串(Strings)和字符(Characters) //Swift中导入Foundation框架可以使用NSString 的方法 //1. 单行String, 用双引号 let someString = "Some string literal value" //2. 多行String, 三个双引号.每行语句后有换行符,不换行用 \,空换行用空白行 //结束符缩进不能多于内容,否则会报错。和结束符缩进相同的字符串,前边的空格自动忽略,比结束符缩进多的字符串前边的空格会显示 let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, \ please your Majesty?" he asked. "Begin at the beginning," the King said gravely, "and go on \ till you come to the end; then stop." """ print(quotation) //3. 字符串中的特殊字符 //字符串可以包含的特殊字符:\0(null), \\, \t(水平制表符), \n, \r, \", \'. 统一码Unicode,写作 "\u{n}",n是1-8位的十六进制数, 返回值对应一个合法的UIcode码字符 let wiseWords = "\"Imagination is more important than knowledge\" - Einstein" //包含双引号 let dollarSign = "\u{24}"; print(dollarSign) //输出美元字符 let blackHeart = "\u{2665}"; print(blackHeart) //黑桃心 let sparklingHeart = "\u{1F496}"; print(sparklingHeart) //多行字符串中可以直接使用双引号,使用三引号时,至少用一个 \ 将三引号隔开,如下 let threeDoubleQuotationMarks = """ Escaping the first quotation mark \""" Escaping all three quotation marks \"\"\" """ print(threeDoubleQuotationMarks) //4. 字符串初始化 //(1) 用空字符串赋值 var emptyString = "" //(2)用语法赋值 var anothEmptyString = String() //判断是否为空,使用isEmpty属性 if emptyString.isEmpty { print("Nothing to see here") } //可变字符串用 var, 不可变字符串用let var variableString = "Horse" variableString += " and carriage" //variableString is now "Horse and carriage" let constantString = "Highlander" //constantString += " and another Highlander" // this reports a compile-time error - a constant string cannot be modified //Strings 是值类型Value Types //创建一个新字符串后,当它被传给函数或者赋值给常量变量,String的值都会被拷贝一份。保证了字符串在传递过程中不会被修改 //5. 字符(Characters) //(1) 创建字符,用type标注类型 let exclamationMark: Character = "!" //(2) 遍历字符串获取字符串的每一个字符 for character in "Dog!" { print(character) } // D // o // g // ! //(3) 可以用字符串数组为字符串赋值 let catCharacters: [Character] = ["C", "a", "t", "!"] let catString = String(catCharacters); print(catString) // print "Cat!" //6. 字符串和字符的连接 //字符串可以拼接字符,字符后不能拼接字符或字符串,因为字符只能有一个字符 //(1) 用 + let string1 = "hello" let string2 = "there" var welcome = string1 + string2 //(2) 用 += var instruction = "look over" instruction += string2 //(3) 字符串拼接字符,使用String的 append() 方法 welcome.append(exclamationMark) //(4) 拼接两个多行字符串,想要每行都换行,多行字符串最后一行为空 let goodStart = """ one two """ let end = """ three """ print(goodStart + end) // one // two // three //7. 字符串插入(String Interpolation) //插入字符串用 \() let multiplier = 3 let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" // multiplier 是Int 类型, 2.5 是Double类型,* 不能用于两种类型相乘
//二. 延展字母簇(Extended Grapheme Clusters) //Swift用延展字母簇(Extended Grapheme Clusters)表示字符的值, 一个字符可以用一个或多个多个Unicode 码表示, 每个Unicode 码都是一个唯一的21字节的数字,用来表示一个字符或表情。例如 U+0061 表示字母 a, U+1F425 表示正面朝前的小鸡符号