Swift语法_字符和字符串

来源:互联网 发布:日本人长相知乎 编辑:程序博客网 时间:2024/06/05 04:58

字符串,结构体,枚举都是值类型Value Types

Swift 的 String 类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/ 方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。 很明显无论该值来自于哪里,都是您 独自拥有的。 您可以确信传递的字符串不会被修改,除非你自己去修改它。

===========================
字符串相关知识点

  1. 字符串类型String
  2. 字符串可以包含的特殊字符
  3. 字符串初始化
  4. 比较字符串
  5. 连接字符串
  6. 字符串大小写转化
  7. 字符串可变性
  8. 使用字符
  9. 创建字符常量
  10. 字符串插值
  11. 11:计算字符数量
  12. 访问字符串
  13. 插入字符和字符串
  14. 删除字符和字符串

代码如下:

//1:字符串类型Stringlet strValue:String = "abc"//2:字符串可以包含的特殊字符/**使用转意字符\0 (null空字符)\\ (反斜杠)\t (制表符)\n (换行符)\r (回车符)\" (双引号)\' (单引号)\xnn (字节Unicode)  nn表示十六进制\unnnn (双字节Unicode)\Unnnnnnnn(四字节Unicode)*/let strValue1 = "\"今天是个\'好日子\'\""print(strValue1)//let strValue2="\x41"//print(strValue2)//let strValue3="\u2600"//print(strValue3)//3:字符串初始化的俩种方式var emptyString1 = ""var emptyString2 = String()var emptyString3 = "abc"var emptyString4 = String("abc")if emptyString1.isEmpty{print("emptyString1是一个空字符串")}//4:比较字符串//字符串/字符可以用等于操作符( == )和不等于操作符( != )//注意:如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等的,那就认为它们是相等的if emptyString3 == emptyString4{print("emptyString3 equal emptyString4")}//hasPrefix(_:) 和 hasSuffix(_:) 方法都是在每个字符串中逐字符比较其可扩展的字符群集是否标准相等let romeoAndJuliet = [    "Act 1 Scene 1: Verona, A public place",    "Act 1 Scene 2: Capulet's mansion",    "Act 1 Scene 3: A room in Capulet's mansion",    "Act 1 Scene 4: A street outside Capulet's mansion",    "Act 1 Scene 5: The Great Hall in Capulet's mansion",    "Act 2 Scene 1: Outside Capulet's mansion",    "Act 2 Scene 2: Capulet's orchard",    "Act 2 Scene 3: Outside Friar Lawrence's cell",    "Act 2 Scene 4: A street in Verona",    "Act 2 Scene 5: Capulet's mansion",    "Act 2 Scene 6: Friar Lawrence's cell"]var act1SceneCount = 0for scene in romeoAndJuliet {    if scene.hasPrefix("Act 1 ") {    ++act1SceneCount    } }print("There are \(act1SceneCount) scenes in Act 1")//5:链接字符串let str1 = "我是中国人\n"let str2 = "我爱中国人\n"var str = str1 + str2//第一种:+var str3 = "hello"str += str3; //第二种:+=print(str)let appendCharacter:Character = "~"str.append(appendCharacter)//第三种:append追加print(str)//6:字符串大小写转化let lowercaseStr = "qwertyuiop"let uppercaseStr = lowercaseStr.uppercaseStringprint(uppercaseStr);print(uppercaseStr.lowercaseString)//7:字符串可变性 (String Mutability)//var 变量可修改 let常量不可修改var variableString = "Horse"variableString += " and carriage"print("\(variableString)")let constantString = "Horse"//constantString += "and carriage"print("\(constantString)")//8:使用字符(Working with Characters)//for-in循环遍历字符串中的字符for character in "Dog!?".characters {    print(character)}//9:创建字符常量let markCharacter:Character = "!"let catCharacter:[Character] = ["C","A","T","?"]let catString = String(catCharacter)print(catString + String(markCharacter))//10:字符串插值 (String Interpolation)let multiplier = 3let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"print("\(message)")//11:计算字符数量let count = message.characters.countprint(count)//注意在 Swift 中,使用可拓展的字符群集作为 Character 值来连接或改变字符串时,并不一定会更改字符串的字 符数量。(因为字符是 e? ,而不是 e)//12:访问字符串 (Accessing and Modifying a String)let greeting = "Niki liushuang!"print(greeting[greeting.startIndex])  //N//print(greeting[greeting.endIndex])//崩溃 EXC_BAD_INSTRUCTION (EXCI386)print(greeting.endIndex.predecessor()) //14print(greeting.startIndex.successor()) //1let index = greeting.startIndex.advancedBy(6)print(index)                           //6for index in greeting.characters.indices {    print("\(greeting[index]) " ,terminator: " ")}//以“ ”结尾,打印输出全部字符//13:插入字符和字符串var welcome = "welcome"welcome.insert("\n", atIndex: welcome.startIndex)welcome.insert("!", atIndex: welcome.endIndex)print(welcome)welcome.insertContentsOf("to China".characters, at: welcome.endIndex.predecessor())print(welcome)//14:删除字符和字符串welcome.removeAtIndex(welcome.startIndex.successor())print(welcome)welcome.removeAtIndex(welcome.endIndex.predecessor())print(welcome)let range = welcome.startIndex.advancedBy(3)..<welcome.endIndex//闭区间的表达方式welcome.removeRange(range)print(welcome)welcome.removeAll()print(welcome)
0 0