我怎样才能得到字符串的第n个字符?我尝试了括号([])访问器,没有运气。
var string = "Hello, world!"
var firstChar = string[0] // Throws error
错误:'下标'是不可用的:不能下标String与Int,请参阅文档注释讨论
我怎样才能得到字符串的第n个字符?我尝试了括号([])访问器,没有运气。
var string = "Hello, world!"
var firstChar = string[0] // Throws error
错误:'下标'是不可用的:不能下标String与Int,请参阅文档注释讨论
当前回答
Swift的String类型没有提供characterAtIndex方法,因为Unicode字符串有几种编码方式。你要用UTF8, UTF16,还是别的?
您可以通过检索String来访问CodeUnit集合。utf8和String。utf16属性。您还可以通过检索String来访问UnicodeScalar集合。unicodeScalars财产。
在NSString实现的精神中,我返回一个unichar类型。
extension String
{
func characterAtIndex(index:Int) -> unichar
{
return self.utf16[index]
}
// Allows us to use String[index] notation
subscript(index:Int) -> unichar
{
return characterAtIndex(index)
}
}
let text = "Hello Swift!"
let firstChar = text[0]
其他回答
在Swift 5中,不扩展字符串:
var str = "ABCDEFGH"
for char in str {
if(char == "C") { }
}
以上Swift代码与Java代码相同:
int n = 8;
var str = "ABCDEFGH"
for (int i=0; i<n; i++) {
if (str.charAt(i) == 'C') { }
}
这是最好最简单的方法之一
let yourString = "thisString"
print(Array(yourString)[8])
将字符串中的每个字母放入数组 然后选择第9个
我的解决方法很简单:
斯威夫特4.1:
let myString = "Test string"
let index = 0
let firstCharacter = myString[String.Index(encodedOffset: index)]
斯威夫特5.1:
let firstCharacter = myString[String.Index.init(utf16Offset: index, in: myString)]
还有另一种选择,在String声明中解释过
extension String : BidirectionalCollection {
subscript(i: Index) -> Character { return characters[i] }
}
到目前为止,下标(_:)不可用。就像我们不能这么做一样
str[0]
与字符串。我们必须提供"String "。指数” 但是,我们如何给出我们自己的索引号呢,我们可以用,
string[str.index(str.startIndex, offsetBy: 0)]