从Swift中的数组值中获取第一个字符

时间:2016-04-29 21:19:56

标签: arrays string swift indexing character

我创建了一个包含两个字符串的数组:

var palabras: [String] = ["Gato", "Martillo"]

我想展示这两个数组字符串的第一个字符。

我尝试过:

letraLabel.text = palabras[round - 1].startIndex.advancedBy(0)

但我得到一个错误:由于信号命令失败:分段错误:11 我不知道它是什么意思。

我也试过了:

letraLabel.text = palabras[round - 1].startIndex

我收到错误: 无法指定类型'索引'的值(又名' String.CharacterView.Index')键入' String?'

最后我尝试过:

letraLabel.text = palabras[round - 1][palabras.startIndex]

但我也遇到了错误: '下标'不可用:不能使用Int下标String,请参阅文档注释以供讨论

如何获取数组中两个单词的第一个字符? 那么,是否需要导入Foundation来获取String的第一个字符? 顺便说一句,当我写" import Foundation" compiller向我展示了一个划线的基础。

4 个答案:

答案 0 :(得分:1)

尝试:

letraLabel.text = String(palabras[round - 1].characters.first!)

如果你想用第一个字母创建另一个数组:

let palabras = ["Gato", "Martillo"]
let firstLetters = palabras.map { String($0.characters.first!) }
print(firstLetters) // ["G", "M"]

答案 1 :(得分:0)

怎么样:

for palabra in palabras {
    let letra = palabra[palabra.startIndex]
    // do something with letra here...
}

或者,如果您不想遍历每个palabra,这样的事情可能有效:

let palabra = palabras[0]
let letra = palabra[palabra.startIndex]
// do something with letra here...

答案 2 :(得分:0)

我认为你很接近。试一试

let charStr = palabras[round - 1]
letraLabel.text = charStr.substringToIndex(charStr.startIndex.advancedBy(1))

或者如果你想将所有第一个字符连接在一起:

letraLabel.text = palabras.map({ $0.substringToIndex($0.startIndex.advancedBy(1)) }).joinWithSeparator("")

答案 3 :(得分:0)

您也可以更轻松地执行此操作,但是完成工作。假设你有一个带有两个字符串的变量。你可以简单地使用

someLabel.text = firstName.characters.first?.description + lastName.characters.first?.description