我想得到一把钥匙:来自这样的词典的价值
var tmpDict = ["a":"1", "b":"2", "c":"3"]
var tmpString = "a1234"
print(tmpDict[tmpString.characters.first])
出现错误,比如tmpString.characters.first无法转换为字符串,如果我想调用tmpDict [xxx],我该怎么办?“xxx”表示tmpString的第一个字符。
答案 0 :(得分:0)
您可以使用:
var tmpDict = ["a":"1", "b":"2", "c":"3"]
var tmpString = "a1234"
tmpDict[String(tmpString[tmpString.characters.startIndex])]
使用tmpString.characters.startIndex
获取tmpString
的第一个字符的索引,然后使用它来提取第一个字符,最后将此字符转换为字符串以访问字典。
答案 1 :(得分:0)
另一种方法是将tmpString
转换为Array
并以这种方式访问它的第一个元素:
tmpDict[String(Array(tmpString)[0])] // "1"
或者你可以使用这个扩展名:
extension String
{
subscript(integerIndex: Int) -> Character
{
let index = advance(startIndex, integerIndex)
return self[index]
}
subscript(integerRange: Range<Int>) -> String
{
let start = advance(startIndex, integerRange.startIndex)
let end = advance(startIndex, integerRange.endIndex)
let range = start..<end
return self[range]
}
}
var tmpDict = ["a":"1", "b":"2", "c":"3"]
var tmpString = "a1234"
print(tmpDict[String(tmpString[0])]!) // "1"
2.0
extension String
{
subscript(integerIndex: Int) -> Character {
let index = startIndex.advancedBy(integerIndex)
return self[index]
}
subscript(integerRange: Range<Int>) -> String {
let start = startIndex.advancedBy(integerRange.startIndex)
let end = startIndex.advancedBy(integerRange.endIndex)
let range = start..<end
return self[range]
}
}