【问题标题】:Swift how to compare string which come from NSStringSwift 如何比较来自 NSString 的字符串
【发布时间】:2015-03-03 22:05:46
【问题描述】:

我得到一个返回号(0 表示成功,1 表示失败)表单服务器由 php 所以我想得到这个数字来判断我的操作是否成功。 我用这个:

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 那么我该怎么做才能解决这个问题。 非常感谢。

【问题讨论】:

  • 如果 Swift 说字符串不相等,那么它们就不相等。注意空格和不可打印的字符。
  • 我会说这可能是问题(要快速检查,请将您的 println(str1) 更改为 println(",".join(map(str1,toString))) - 如果您看到任何逗号,那就是您的问题)。然而,这里似乎有 4 个变量在起作用——str3str4returnOnestr1。您正在比较 returnOne==str1,但将值分配给 str3str4...
  • 对不起,我比较了 str3 和 str4,它们不一样
  • 我得到了 ,,,,1 在你的方式中。但是如何解决这个问题,谢谢。
  • 我不明白str3和str4是什么?你只是在比较 str1 和 returnOne

标签: ios swift nsstring compare


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    听起来你的字符串中有一些空格。要使用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 的东西,你会得到一个运行时错误!
    • ?. 如果不为零,则可以选择调用修剪。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多