快速如何比较来自NSString的字符串



我得到一个由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 -4611686018427387899str2 _countAndFlags UWord 1 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结束时没有强制解开包装(!)。 切勿强制解开可能为零的内容,否则会出现运行时错误!
  • ?.可以选择调用修剪(如果它不是 nil)。

请注意,这意味着str1是一个String?而不是一个String但这很好,因为您可以将可选与非可选进行比较(如果可选包含等于非可选的值,它们将相等,但如果可选包含nil,则不相等)

如果你真正想要的是一个Int,只需添加一个let int1 = str1?.toInt()。 这仍然是一个可选的 - 如果在nil的情况下有一个合理的默认值,你可以做let int1 = str1?.toInt() ?? 0,在nil的情况下,它将是非可选的,值为0

在 swift 2 中您可以使用 let str = "string" let nsstr:NSString = "string" if nsstr.containsString(str){ print(true) }else{ print(false) } 它对我有用

相关内容

  • 没有找到相关文章

最新更新