Swift2.0 中的String(三):类型转换

本系列第三篇,String相关的类型转换。其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P):

虽然Swift是强类型语言,但简单的String类型转换其实还是比较方便的,最暴力的就是强制类型转换,百试百灵:

func toString<T>(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") 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值