返回

String,大道至简,妙用无穷

IOS

从 Objective-C 到 Swift

Objective-C 中的 NSString 类型对 Swift 而言过于臃肿且复杂。NSString 基于 C 风格的字符串(又称空终止字符串),是以 char* 指针的形式存储,这意味着它可以指向任意位置的内存,而不仅是 Swift 中使用的堆内存。NSString 中的大量方法都是为了处理此类复杂性而设计的,而 Swift 中没有这些问题,因此不需要这些方法。

另一方面,String 的设计更加精简。它是一个值类型,这意味着它永远不会被 nil,并且它总是存储在堆内存中。这使得 String 更加安全和易于使用。

String 的插入和删除

String 最强大的功能之一是能够轻松插入和删除字符。可以使用 insert(_:at:) 方法将字符插入字符串中的指定位置,也可以使用 remove(at:) 方法从字符串中删除字符。

例如,以下代码将 "Hello" 字符串中的 "l" 字符替换为 "L" 字符:

var str = "Hello"
str.insert("L", at: str.index(str.startIndex, offsetBy: 3))
str.remove(at: str.index(str.startIndex, offsetBy: 2))
print(str) // "HeLlo"

String 的下标

String 可以使用下标访问其字符。下标可以是整数,也可以是字符串范围。

例如,以下代码获取 "Hello" 字符串中的第一个字符:

let firstCharacter = str[str.startIndex]
print(firstCharacter) // "H"

以下代码获取 "Hello" 字符串中从第二个字符到第四个字符的子字符串:

let substring = str[str.index(str.startIndex, offsetBy: 1)...str.index(str.startIndex, offsetBy: 3)]
print(substring) // "ell"

String 的 prefixsuffix

String 还有两个有用的属性:prefixsuffixprefix 属性返回字符串的开头部分,而 suffix 属性返回字符串的结尾部分。

例如,以下代码获取 "Hello" 字符串的开头两个字符:

let prefix = str.prefix(2)
print(prefix) // "He"

以下代码获取 "Hello" 字符串的结尾三个字符:

let suffix = str.suffix(3)
print(suffix) // "llo"

结论

String 是一个强大的工具,可以用来处理各种各样的文本数据。它比 Objective-C 中的 NSString 更简单、更安全、更易于使用。在本文中,我展示了 String 的一些最强大的功能,包括插入和删除字符、使用下标访问字符以及使用 prefixsuffix 属性。