Ios Swift如何比较来自NSString的字符串
我从php制作的服务器中得到一个返回号(0表示成功,1表示失败) 所以我想用这个数字来判断我的手术成功与否。 我用这个:Ios Swift如何比较来自NSString的字符串,ios,swift,nsstring,compare,Ios,Swift,Nsstring,Compare,我从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
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计数和标志UWord 13835058055282163717-4611686018427387899
//str2计数和标志UWord 1
我试着用toInt。我得到1383。。。表格str3和1表格str4
那么我该如何解决这个问题呢。
非常感谢。听起来您的字符串中有一些空格。要使用
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
)。永远不要强制展开可能为零的内容,否则会出现运行时错误李>!
选择调用trim,如果它不是nil李>?。
str1
是一个字符串?
不是字符串
,但这很好,因为您可以将可选值与非可选值进行比较(如果可选值包含与非可选值相等的值,则两者相等,但如果可选值包含nil
,则两者不相等)
如果您实际需要的是一个Int
,只需添加一个let int1=str1?.toInt()
。这仍然是可选的–如果在nil
的情况下存在合理的默认值,则可以执行let int1=str1?.toInt()??0
,如果在swift 2中出现nil
,,则该值为0
为非可选值
let str=“string”
让nsstr:NSString=“string”
如果nsstr.包含字符串(str){
打印(真)
}否则{
打印(假)
}
这对我有用如果斯威夫特说字符串不相等,那么它们就不相等。注意空格和不可打印字符。我认为这可能是问题所在(要快速检查,请将
println(str1)
更改为println(“,”。加入(map(str1,toString))
–如果您看到任何逗号,这就是您的问题)。然而,这里似乎有4个变量在起作用–str3
,str4
,returnOne
和str1
。您正在比较returnOne==str1
,但是给str3
和str4
赋值……对不起,我比较了str3和str4,它们不一样,我得到了,,,,1。但是如何解决这个问题,谢谢。我不明白str3和str4是什么?您只是在比较str1和returnOne