将数组中的字符转换为整数
Posted
技术标签:
【中文标题】将数组中的字符转换为整数【英文标题】:Converting Character in an array to an Integer 【发布时间】:2014-06-28 05:37:57 【问题描述】:即使我搜索了文档,我似乎也无法弄清楚如何做到这一点。
我正在尝试弄清楚如何将数组中索引处的字符转换为整数。
例如,假设我有一个名为“容器”的字符数组,我不知道该怎么做:
var number:Integer = container[3]
感谢您的帮助!
【问题讨论】:
你是指Swift类型Character
还是CChar
/CString
?
我觉得可以在数组上调用utf8,然后找到对应的索引。我在converting a string to a double 时遇到了同样的问题。
它的类型 Arraynumber
最终变成什么?
【参考方案1】:
Swift 并不容易在事物的原始表示和类型表示之间进行转换。这是一个在此期间应该有所帮助的扩展:
extension Character
func utf8Value() -> UInt8
for s in String(self).utf8
return s
return 0
func utf16Value() -> UInt16
for s in String(self).utf16
return s
return 0
func unicodeValue() -> UInt32
for s in String(self).unicodeScalars
return s.value
return 0
这可以让你非常接近你想要的:
let container : Array<Character> = [ "a", "b", "c", "d" ]
/// can't call anything here, subscripting's also broken
let number = container[2]
number.unicodeValue() /// Prints "100"
对于遇到此问题的任何工程师,请参阅 rdar://17494834
【讨论】:
【参考方案2】:我不确定它是否有效,但至少它有效。我将 Character 转换为 String,然后转换为 Int。
String(yourCharacterInArray).toInt()
【讨论】:
【参考方案3】:你可以试试这个:
var container = "$0123456789" var number:Int = Array(container.utf8).map Int($0) [3]
这完全是丑陋的,但它的工作。此外,它的计算成本有点高(每次访问字符串中的字符时 O(n))。尽管如此,这仍然可能是一种恢复构建 CStrings 方法的技巧:
typealias CString = Array<CChar> func toCString(string: String) -> CString return Array(string.utf8).map CChar($0) + [0] var cString = toCString("$ 0123456789") println("The 2nd character in cString has value \(cString[1])") // It outputs 32
或者不实现函数:
var container = "$ 0123456789" var containerAsCString = Array(container.utf8).map CChar($0) + [0] println("The 2nd character in container has value \(containerAsCString[1])") // It outputs 32
【讨论】:
【参考方案4】:为什么不只 for 循环数组并将所有内容都转换为 Int?
https://developer.apple.com/Library/mac/documentation/General/Reference/SwiftStandardLibraryReference/index.html
【讨论】:
【参考方案5】:为什么不直接将字符转换为字符串,为其获取 unicodeScalars 并提取标量上的 .value?
类似:
var chr: [Character] = ["C", "B", "A"]
for a in String(chr[1]).unicodeScalars
println(a.value)
【讨论】:
【参考方案6】:对我来说是这样的:
"\(container[3])".toInt()
【讨论】:
以上是关于将数组中的字符转换为整数的主要内容,如果未能解决你的问题,请参考以下文章