在Swift中,字符串转换为整型的方法有两种,我们在这里比较一下这两种方法的区别:
1、使用强制类型转换,代码如下:
var str = "1234"
var integer = Int(str)
print(integer) // 输出1234
但如果换一个字符串
var str = "123,4"
var integer = Int(str)
print(integer) // 输出nil
2、先将swift原生String类型字符串转换为NSString类型,再使用NSString类型的只读属性即可完成转换
var str = "1234"
var integer = (str as NSString).integerValue
print(integer) // 输出1234
现在换一个字符串
var str = "123,4"
var integer = (str as NSString).integerValue
print(integer) // 输出123
但再换一个字符串
var str = "a123,4"
var integer = (str as NSString).integerValue
print(integer) // 输出0
结论:可见第一种方法方便、简单,但如果字符串中含有非数字字符,便不能完成转换,也就是说,这种方法只能将字符串整个全部转换成整型,而且转换的结果为可选类型(成功时字面量为该数字,失败时为nil);第二种方法相比第一种方法略为麻烦一点,而且会有一点多余的转换的开销(官方文档说String转换为NSString时是零开销,但肯定是会有开销的,只是几乎能忽略不计),但这种方式可以从字符串的第一个字符开始判断,若第一个字符为非数字字符,则转换结果为0,若第一个字符为数字字符,则转换下一个字符,直到遇到非数字字符或字符串结尾为止,并且中这种方式转换的结果为非可选整型
以博主个人的习惯来说,推荐大家使用第二种转换方法。