如何比较两个string在Swift语言中忽略大小写?

我们怎样才能比较两个string在快速忽略的情况下? 例如:

var a = "Cash" var b = "cash" 

如果我们比较var a&var b,是否有任何方法返回true?

尝试这个 :

 var a : String = "Cash" var b : String = "cash" if(a.caseInsensitiveCompare(b) == NSComparisonResult.OrderedSame){ println("voila") } 

Swift 3.0

 if(a.caseInsensitiveCompare(b) == ComparisonResult.orderedSame){ print("voila") } 

使用caseInsensitiveCompare方法:

 let a = "Cash" let b = "cash" let c = a.caseInsensitiveCompare(b) == .orderedSame println(c) // prints "true" 
 if a.lowercaseString == b.lowercaseString { //Strings match } 

尝试这个:

 var a = "Cash" var b = "cash" let result: NSComparisonResult = a.compare(b, options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil, locale: nil) // You can also ignore last two parameters(thanks 0x7fffffff) //let result: NSComparisonResult = a.compare(b, options: NSStringCompareOptions.CaseInsensitiveSearch) 

结果是NSComparisonResult枚举的types:

 enum NSComparisonResult : Int { case OrderedAscending case OrderedSame case OrderedDescending } 

所以你可以使用if语句:

 if result == .OrderedSame { println("equal") } else { println("not equal") } 

可以推出自己的:

 func equalIgnoringCase(a:String, b:String) -> Bool { return a.lowercaseString == b.lowercaseString } 

Swift 3

正确的方法:

  let a: String = "Cash" let b: String = "cash" if a.caseInsensitiveCompare(b) == .orderedSame { //Strings match } 

请注意: ComparisonResult.orderedSame也可以简写为.orderedSame。

其他方法:

一个。

  if a.lowercased() == b.lowercased() { //Strings match } 

  if a.uppercased() == b.uppercased() { //Strings match } 

C。

  if a.capitalized() == b.capitalized() { //Strings match } 

你也可以使所有的字母大写(或小写),看看他们是否是相同的。

 var a = “Cash” var b = “CASh” if a.uppercaseString == b.uppercaseString{ //DO SOMETHING } 

这将使这两个variables为”CASH” ,因此他们是平等的。

你也可以做一个String扩展

 extension String{ func equalsIgnoreCase(string:String) -> Bool{ return self.uppercaseString == string.uppercaseString } } if "Something ELSE".equalsIgnoreCase("something Else"){ print("TRUE") } 

Swift 3

 if a.lowercased() == b.lowercased() { } 

Swift 3 :你可以定义你自己的操作符,例如~=

 infix operator ~= func ~=(lhs: String, rhs: String) -> Bool { return lhs.caseInsensitiveCompare(rhs) == .orderedSame } 

然后你可以在操场上试试

 let low = "hej" let up = "Hej" func test() { if low ~= up { print("same") } else { print("not same") } } test() // prints 'same' 

Swift 3:

您还可以使用两个string函数之间的本地化大小写不敏感的比较,并返回Bool

 var a = "cash" var b = "Cash" if a.localizedCaseInsensitiveContains(b) { print("Identical") } else { print("Non Identical") }