Swift2.0 中的String(三):类型转换
本系列第三篇,String相关的类型转换。其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P):
- Swift2.0 中的String(一):常用属性
- Swift2.0 中的String(二):基本操作
- Swift2.0 中的String(三):类型转换
- 编码转换(TBD)
我的练习源代码可以在 这里
看到
虽然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")
Swift2.0 中的String(三):类型转换的更多相关文章
- Swift2.0 中的String(二):基本操作
Swift中的字符串,第二篇,基本操作.其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P): Swift2.0 中的String(一) ...
- Swift2.0 中的String(一):常用属性
字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...
- List转String数组 collection.toArray(new String[0])中new String[0]的语法解释
Collection的公有方法中,toArray()是比较重要的一个. 但是使用无参数的toArray()有一个缺点,就是转换后的数组类型是Object[]. 虽然Object数组也不是不能用,但当你 ...
- collection.toArray(new String[0])中new String[0]的作用
new string[0]的作用 比如:String[] result = set.toArray(new String[0]); Collection的公有方法中,toArray()是比较重要的一个 ...
- Swift2.0语言教程之Swift2.0语言中的标准函数
Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...
- (IOS)Swift2.0 Radio 程序分析
本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源项目Swift Radio的研究心得. 项目地址:https://github.com/swiftcodex/Swift-Rad ...
- [Swift2.0系列]Defer/Guard 基础语法
1.Defer Swift2.0中加入了defer新语法声明.defer译为延缓.推迟之意.那么在Swift2.0中它将被应用于什么位置呢?比如,读取某目录下的文件内容并处理数据,你需要首先定位到文件 ...
- Swift2.0语言教程之函数的返回值与函数类型
Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...
- Swift2.0 UITextView 和 UITextFile 的使用
在Swift2.0中,UITextFile 和 UITextView 的使用总体上和在OC中是一样的,今天只是给大家一段代码,然后说UITextView里面的光标位置的问题.先看他们使用的简单的代码 ...
随机推荐
- 【LeetCode】189 - Rotate Array
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- C语言实现strcat
首先看看代码: #ifndef STRCAT_H #define STRCAT_H /********************************************************* ...
- 关于Windows API、CRT和STL二三事
1.本文编写目的 本文是为了帮助一些人弄清一些关于Windows API, C运行时程序库(CRT), 和标准C++库(STL)的基本概念.有很多人甚至是有经验的程序员在这些概念上是含糊不清的甚 ...
- SNMP 和 NetBios协议理解
一.简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task For ...
- XML转换为Map通用算法实现 Java版本(Stax实现)
目前项目中需要将XML转换为Map,下面给出了自己的代码实现. 后续将为大家提供Dom版本的实现. 请各路大神给予各种优良实现. 场景: 在项目中需要解析XML文本字符串,需要将XML文本字符串映射为 ...
- about云资源共享
Nosql资源: http://www.aboutyun.com/thread-5655-1-1.html (1)redis安置(2)RedisAdminUI.zip(3)redis安装部署(4) ...
- Cocos2d-JS v3.0 alpha 导入 cocostudio的ui配置
1.在新项目的根文件夹下打开project.json文件,修改: "modules" : ["cocos2d", "extensions", ...
- dom 学习的开始~简单留言1
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 转】Mahout分步式程序开发 基于物品的协同过滤ItemCF
原博文出自于: http://blog.fens.me/hadoop-mahout-mapreduce-itemcf/ 感谢! Posted: Oct 14, 2013 Tags: Hadoopite ...
- cocos2d-x 3.2 椭圆运动
直接上代码: // // OvalAction.h // LSWGameIOS // // Created by lsw on 14-10-27. // // #ifndef __LSWGameIOS ...