如何获取字符串的第n个字符?我try 了支架([]
)访问器,但没有成功.
var string = "Hello, world!"
var firstChar = string[0] // Throws error
错误:"下标"不可用:无法将字符串下标为Int,请参阅文档注释进行讨论
如何获取字符串的第n个字符?我try 了支架([]
)访问器,但没有成功.
var string = "Hello, world!"
var firstChar = string[0] // Throws error
错误:"下标"不可用:无法将字符串下标为Int,请参阅文档注释进行讨论
Attention:有关Swift 4和Swift 5的正确实施,请参见Leo Dabus' answer.
Swift 4中引入了Substring
型来制作子字符串
extension StringProtocol {
subscript(offset: Int) -> Character { self[index(startIndex, offsetBy: offset)] }
subscript(range: Range<Int>) -> SubSequence {
let startIndex = index(self.startIndex, offsetBy: range.lowerBound)
return self[startIndex..<index(startIndex, offsetBy: range.count)]
}
subscript(range: ClosedRange<Int>) -> SubSequence {
let startIndex = index(self.startIndex, offsetBy: range.lowerBound)
return self[startIndex..<index(startIndex, offsetBy: range.count)]
}
subscript(range: PartialRangeFrom<Int>) -> SubSequence { self[index(startIndex, offsetBy: range.lowerBound)...] }
subscript(range: PartialRangeThrough<Int>) -> SubSequence { self[...index(startIndex, offsetBy: range.upperBound)] }
subscript(range: PartialRangeUpTo<Int>) -> SubSequence { self[..<index(startIndex, offsetBy: range.upperBound)] }
}
要将Substring
转换为String
,您只需
如果有人能想出一个合并的好方法,那就太好了
错误信息显示为"see the documentation comment for discussion".苹果在文件UnavailableStringAPIs.swift中提供了以下解释:
无法使用整数订阅字符串.
"字符串中的第
i
个字符"的概念已经过时Swift提供了几种不同的方式来访问角色
String.utf8
是中的UTF-8代码单元的集合
String.utf16
是UTF-16代码单元的集合
String.unicodeScalars
是Unicode标量的集合.
String.characters
是一个扩展字集请注意,在处理包含人类可读文本的字符串时,