随着 swift2.0 的问世,越来越多的开发者使用这门语言进行 iOS 应用开发,在开发中我们常常需要用到各种字符串、类、接口等等,今天小编和大家分享的就是 swift2.0 中 String 的类型转换方法,一起来看看吧。
其实,swift 语言属于强类型语言,但简单的 String 类型转换其实还是比较方便的,最暴力的就是强制类型转换,百试百灵:
func toString(a: T) -> String{
// Way one, format
//return "(a)"
// Way two, new string
return String(a)
}
toString(123)
toString(0.007)
toString([4, 8, 32, 5 ])
toString("test".startIndex)
同样依葫芦画瓢也能转回来:
Int("123")
Float("3.1")
但这个太简单、太有局限性了!建议还是用下面这个,利用了 New 的时候 format 方法,简直就是 sprintf()的替代品!
// Way 1, 格式化转 String
String(format:"%i, 0x%x, 0o%o, %.2f", 31, 31, 31, 3.1)
// Way 2
String().stringByAppendingFormat("%x",31)
String().stringByAppendingFormat("%o",31)
同样的,有了 sprintf(),怎么能没有 sscanf()??
//十六进制 String 转整数
var res:UInt32 = 0
NSScanner.localizedScannerWithString(str).scanHexInt(&res)
当然,这个用起来就要麻烦许多,类似的一堆 API:
NSScanner.localizedScannerWithString(str).scanInt(&res)
NSScanner.localizedScannerWithString(str).scanFloat(&res)
NSScanner.localizedScannerWithString(str).scanDouble(&res)
NSScanner.localizedScannerWithString(str).scanInteger(&res)
NSScanner.localizedScannerWithString(str).scanHexFloat(&res)
最后,虽然 ASCII 码现在不大常用了,但相信也有开发者喜欢 ASCII 码的转换函数吧:
/**
ASCII value to char
*/
func ASCII ( n : Int) -> String? {
guard (n >= 0 && n < 255 ) else {
return nil
}
return String(format:"%c", n)
}
/**
ASCII char to int value
*/
func ASCII (c : String) -> Int8?{
let str:NSString = c
let n = str.UTF8String[0]
guard n>=0 else {
return nil
}
return n
}
ASCII(70)
ASCII("B")
以上就是 swift2.0 中 string 类型转换相关操作方法,强烈建议大家在自己的环境中去尝试实现上面的这些方法,看看效果如何。自有自己动手实践了,才能更好的转变成自己的东西。
相关文章:《Swift2.0 中 String 的正则匹配详解》
http://www.maiziedu.com/group/article/10076/
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于