我得到一个由php制作的表单服务器的返回号码(成功为0,失败为1) 所以我想得到这个数字来判断我的操作是否成功。 我用这个:
var str1 :String = NSString(data: d, encoding: NSUTF8StringEncoding)!
let str2 = "1"
println(str1) // output is 1
println(str2) // output is 1
if(str1==str2){println("same")} //but the two is not same
所以我调试了这个,我得到了这个结果: // str1 _countAndFlags UWord 13835058055282163717 -4611686018427387899 // str2 _countAndFlags UWord 1 1
我尝试使用toInt。我得到1383 ...形式str3和1形式str4 那么我该怎么做才能解决这个问题呢。 非常感谢你。
答案 0 :(得分:3)
听起来你的字符串中有一些空格。要使用println
发现此问题,您可以尝试println(",".join(map(str1,toString)))
。如果你看到任何逗号,那就是问题。
解决此问题的最简单方法是(在源头杀死空格可能更好)是使用stringByTrimmingCharactersInSet
:
let str1: String = NSString(data: d, encoding: NSUTF8StringEncoding)
?.stringByTrimmingCharactersInSet(
NSCharacterSet.whitespaceAndNewlineCharacterSet())
let str2 = "1"
if str1==str2 { println("same") }
请注意其他一些变化:
let
而不是var
,因为它看起来不需要在声明后更改str1
!
创建结束时没有强制解包(NSString
)。永远不要强行打开可能为零的东西,你会收到运行时错误!?.
如果不是nil,可以选择调用trim。 注意,这意味着str1
是String?
而不是String
,但这很好,因为您可以将选项与非选项进行比较(如果可选项包含值,它们将相等)等于非可选项,但如果可选项包含nil
)
如果您真正想要的是Int
,只需添加let int1 = str1?.toInt()
。这仍然是可选的 - 如果在nil
的情况下存在合理的默认值,则可以执行let int1 = str1?.toInt() ?? 0
,如果{0
,则该值为nil
是非可选的{1}}。
答案 1 :(得分:-1)
在swift 2中你可以使用
let str = "string"
let nsstr:NSString = "string"
if nsstr.containsString(str){
print(true)
}else{
print(false)
}
它对我有用