3.字符串和字符

  String是例如"hello, world""albatross"这样的有序的字符类型的值的集合。通过String类型来表示。 一个String的内容可以用许多方式读取,它包括一个字符值的集合。 

1.字符串字面量

  • 字符串字面量是由双引号 ("") 包裹着的具有固定顺序的文本字符集。
let someString = "Some string literal value"; 

2.初始化空字符串

var emptyString = "";               // 空字符串字面量
var anotherEmptyString = String();  // 初始化方法
if emptyString == anotherEmptyString
{
    print("(emptyString.isEmpty)");  //结果为true
}

3.字符串可变性

  • 可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改
var variableString = "Horse";
variableString += " and carriage";

4.字符串是值类型

  • Swift String类型是值类型。 如果创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。
  • 在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着将字符串作为值类型的同时可以获得极高的性能。

 5.使用字符 

//通过for-in循环来遍历字符串中的characters属性来获取每一个字符的值
for character in "Dog!".characters
{
    print(character);
}

//通过传递一个值类型为Character的数组作为自变量来初始化:
let catCharacters: [Character] = ["C", "a", "t", "!"];
let catString = String(catCharacters);
print(catString);

6.比较字符串

//字符串/字符可以用等于操作符(==)和不等于操作符(!=)比较:
let quotation = "We're a lot alike, you and I.";
let sameQuotation = "We're a lot alike, you and I.";
if quotation == sameQuotation
{
    print("These two strings are considered equal");
}

//通过调用字符串的hasPrefix(_:)/hasSuffix(_:)方法来检查字符串是否拥有特定前缀/后缀,两个方法均接收一个String类型的参数,并返回一个布尔值。
let romeoAndJuliet = "Act 1 Scene 1: Verona, A public place";
romeoAndJuliet.hasPrefix("Act 1");

7.访问和修改字符串

  • 字符串索引:每一个String值都有一个关联的索引(index)类型,String.Index,它对应着字符串中的每一个Character的位置。使用startIndex属性可以获取一个String的第一个Character的索引。使用endIndex属性可以获取最后一个Character的后一个位置的索引。
  • 调用insert(_:atIndex:)方法可以在一个字符串的指定索引插入一个字符。
  • 调用insertContentsOf(_:at:)方法可以在一个字符串的指定索引插入一个字符串。
  • 调用removeAtIndex(_:)方法可以在一个字符串的指定索引删除一个字符。
  • 调用removeRange(_:)方法可以在一个字符串的指定索引删除一个子字符串。
var greeting = "Guten Tag!";
greeting[greeting.startIndex];  //G
let index = greeting.startIndex.advancedBy(2);
greeting[index];  //t
greeting.insert("!", atIndex: greeting.endIndex);  //"Guten Tag!!"
greeting.insertContentsOf(" Come".characters, at: greeting.endIndex.predecessor());  //"Guten Tag! Come!"
greeting.removeAtIndex(greeting.endIndex.predecessor());  //"!"
原文地址:https://www.cnblogs.com/LeeGof/p/5673871.html