Swift 如何比较来自 NSString 的字符串
Swift how to compare string which come from NSString
我得到一个 return 数字(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
那么我该怎么做才能解决这个问题。
非常感谢。
听起来你的字符串中有一些空格。要使用 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
的情况下=23=].
在swift 2 你可以使用
let str = "string"
let nsstr:NSString = "string"
if nsstr.containsString(str){
print(true)
}else{
print(false)
}
它对我有用
我得到一个 return 数字(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 那么我该怎么做才能解决这个问题。 非常感谢。
听起来你的字符串中有一些空格。要使用 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
的情况下=23=].
在swift 2 你可以使用
let str = "string"
let nsstr:NSString = "string"
if nsstr.containsString(str){
print(true)
}else{
print(false)
}
它对我有用