你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
String
toInt//
toUInt//
Uint
没有找到相关结果
冰洋
赞同来自:
init?/_ text: String, radix: Int = default/
print/UInt/"1234"// // Optional/1234/ // This is UInt.max on a 64-bit platform: print/UInt/"18446744073709551615"// // Optional/18446744073709551615/ print/UInt/"18446744073709551616"// // nil /overflow/ print/UInt/"1234x"// // nil /invalid character/ print/UInt/"-12"// // nil /invalid character/
UInt
extension String { func toUInt// -> UInt? { if contains/self, "-"/ { return nil } return self.withCString { cptr -> UInt? in var endPtr : UnsafeMutablePointer<int8> = nil errno = 0 let result = strtoul/cptr, &endPtr, 10/ if errno != 0 || endPtr.memory != 0 { return nil } else { return result } } } }
strtoul
endPtr
endPtr.memory == 0
errno
ERANGE
strtoul//
char *
strtoul/self, &endPtr, 0/
self.withCString { ... }
println/"1234".toUInt/// // Optional/1234/ // This is UInt.max on a 64-bit platform: println/"18446744073709551615".toUInt/// // Optional/18446744073709551615/ println/"18446744073709551616".toUInt/// // nil /overflow/ println/"1234x".toUInt/// // nil /invalid character/ println/"-12".toUInt/// // nil /invalid character/
知食
let uIntString = "4" let nonUIntString = "foo" extension String { func toUInt// -> UInt? { let scanner = NSScanner/string: self/ var u: UInt64 = 0 if scanner.scanUnsignedLongLong/&u/ && scanner.atEnd { return UInt/u/ } return nil } } uIntString.toUInt// // Optional/4/ nonUIntString.toUInt// // nil
快网
!
map
toInt
let str = "4" let myUInt = str.toInt//.flatMap { $0 < 0 ? nil : UInt/$0/ }
myUInt
extension String { func toUInt// -> UInt? { return self.toInt//.flatMap { $0 < 0 ? nil : UInt/$0/ } } } let str = "-4" if let myUInt = str.toUInt// { println/"yay, \/myUInt/"/ } else { println/"nuh-uh"/ }
Int
let string = "123" let number = UInt/string/ //here number is of type *optional UInt* //Forced Unwrapping if number != nil { //converted to type UInt }
裸奔
let someString = "4" UInt/someString.toInt//!/ // 4
要回复问题请先登录或注册
5 个回复
冰洋
赞同来自:
:
以。。。开始 Swift 2, 所有整数类型都有 /故障转移/ 构造函数
替换该方法
的
, 所以
对于此任务,不再需要用户代码:
旧答案 Swift 1.x
:
它看起来有点困难,但应该为所有数字工作
全系列
并正确检测到所有可能的错误
/例如,溢出或 trailing 符号无效/:
评论
:
库函数用于转换
https://developer.apple.com/li ... .html
.
有意思 first "invalid character" 在输入行中
所以
必须保存如果
全部
符号
可以转换。
在转换错误全局变量的情况下
安装了
在非零值中 /例如,
溢出/.
对于负符号的测试是必要的,因为
接受
负数 /将其转换为无符号数
相同的位模板/.
线 Swift 转变为一个字符串 C "behind the scenes" 为了
转移函数接受参数
, 所以这是可能的
打电话的诱惑
/我做了什么
这个答案的第一个版本/. 问题是自动
创建字符串 C 只是暂时的,可能已经无效
返回
, 以便
不再表明
输入线中的符号。 当我在操场上测试代码时发生了这种情况。 从
由于字符串不会发生此问题 C 在整个履行中有效
电路。
一些测试:
</int8>
知食
赞同来自:
我希望这个能帮上忙
// 编辑如下 @Martin R. 句子
快网
赞同来自:
.
轻松附加
到底
, 将其转换为可选
:
然后使用
在
.
如果你发现你经常做什么:
edit: 如..所示 @MartinR, 虽然它是安全的,但它没有提取完整范围的可能值
, 哪一个
没有封面,看到另外两个答案。
知食
赞同来自:
opd:。
裸奔
赞同来自: