swift如何删除可选的string字符
如何删除可选字符
let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) println(color) // Optional("Red") let imageURLString = "http://hahaha.com/ha.php?color=\(color)" println(imageURLString) //http://hahaha.com/ha.php?color=Optional("Red")
我只是想输出“ http://hahaha.com/ha.php?color=Red ”
我能怎么做?
嗯….
实际上,当你将任何variables定义为可选时,你需要解开这个可选的值。 要解决这个问题,要么你必须声明variables为非选项,或者把!(感叹号)标记放在variables的后面以解开选项值。
var temp : String? // This is an optional. temp = "I am a programer" println(temp) // Optional("I am a programer") var temp1 : String! // This is not optional. temp1 = "I am a programer" println(temp1) // "I am a programer"
在尝试通过string插值使用它之前,您需要打开可选项。 最安全的方法是通过可选的绑定 :
if let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) { println(color) // "Red" let imageURLString = "http://hahaha.com/ha.php?color=\(color)" println(imageURLString) // http://hahaha.com/ha.php?color=Red }
我又看了一遍,我正在简化我的答案。 我想这里的答案大部分都没有提到。 你通常要打印你的variables是否有一个值,而且你也希望你的程序不会崩溃,如果没有(所以不要使用!)。 这里只是做这个
print("color: \(color ?? "")")
这会给你空白或价值。
检查零和解包使用“!”:
let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) println(color) // Optional("Red") if color != nil { println(color!) // "Red" let imageURLString = "http://hahaha.com/ha.php?color=\(color!)" println(imageURLString) //"http://hahaha.com/ha.php?color=Red" }
在swift3
您可以轻松删除可选项
if let value = optionalvariable{ //in value you will get non optional value }
除了其他答案中提到的解决scheme之外,如果您想要始终避免整个项目的可选文本,则可以添加此窗格:
pod 'NoOptionalInterpolation'
( https://github.com/T-Pham/NoOptionalInterpolation )
该pod添加了一个扩展来覆盖string插入init方法,以摆脱一次所有的可选文本。 它还提供了一个自定义的操作符*来恢复默认行为。
所以:
import NoOptionalInterpolation let a: String? = "string" "\(a)" // string "\(a*)" // Optional("string")
尝试这个,
var check:String?="optional String" print(check!) //optional string. This will result in nil while unwrapping an optional value if value is not initialized or if initialized to nil. print(check) //Optional("optional string") //nil values are handled in this statement
如果你有信心在你的variables中没有零,那么先去吧。