我们怎样才能在swift忽略的情况下比较两个字符串? 例如:
var a = "Cash"
var b = "cash"
如果我们比较var a&是否有任何方法会返回true var b
答案 0 :(得分:160)
试试这个:
对于年长的swift:
var a : String = "Cash"
var b : String = "cash"
if(a.caseInsensitiveCompare(b) == NSComparisonResult.OrderedSame){
println("voila")
}
Swift 3.0& 4.1
var a : String = "Cash"
var b : String = "cash"
if(a.caseInsensitiveCompare(b) == .orderedSame){
print("voila")
}
答案 1 :(得分:32)
使用caseInsensitiveCompare
方法:
let a = "Cash"
let b = "cash"
let c = a.caseInsensitiveCompare(b) == .orderedSame
print(c) // "true"
ComparisonResult告诉你哪个词在字典顺序中比另一个更早出现(即哪一个更靠近字典的前面)。 .orderedSame
表示字符串最终会出现在字典中的相同位置
答案 2 :(得分:20)
if a.lowercaseString == b.lowercaseString {
//Strings match
}
答案 3 :(得分:8)
试试这个:
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枚举的类型:
enum NSComparisonResult : Int {
case OrderedAscending
case OrderedSame
case OrderedDescending
}
所以你可以使用if语句:
if result == .OrderedSame {
println("equal")
} else {
println("not equal")
}
答案 4 :(得分:4)
可以自己滚动:
func equalIgnoringCase(a:String, b:String) -> Bool {
return a.lowercaseString == b.lowercaseString
}
答案 5 :(得分:4)
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
}
<强>角强>
if a.capitalized() == b.capitalized() {
//Strings match
}
答案 6 :(得分:1)
您也可以将所有字母设为大写(或小写),看看它们是否相同。
var a = “Cash”
var b = “CASh”
if a.uppercaseString == b.uppercaseString{
//DO SOMETHING
}
这将使两个变量都为”CASH”
,因此它们是相等的。
您还可以制作String
分机号
extension String{
func equalsIgnoreCase(string:String) -> Bool{
return self.uppercaseString == string.uppercaseString
}
}
if "Something ELSE".equalsIgnoreCase("something Else"){
print("TRUE")
}
答案 7 :(得分:1)
localizedCaseInsensitiveContains :通过执行不区分大小写,区域设置感知的搜索来返回接收方是否包含给定字符串
if a.localizedCaseInsensitiveContains(b) {
//returns true if a contains b (case insensitive)
}
<强>被修改强>:
caseInsensitiveCompare :返回调用compare(_:options :)的结果,并将NSCaseInsensitiveSearch作为唯一选项。
if a.caseInsensitiveCompare(b) == .orderedSame {
//returns true if a equals b (case insensitive)
}
答案 8 :(得分:1)
电话号码比较示例;使用Swift 4.2
npm start
答案 9 :(得分:0)
extension String
{
func equalIgnoreCase(_ compare:String) -> Bool
{
return self.uppercased() == compare.uppercased()
}
}
使用样本
print("lala".equalIgnoreCase("LALA"))
print("l4la".equalIgnoreCase("LALA"))
print("laLa".equalIgnoreCase("LALA"))
print("LALa".equalIgnoreCase("LALA"))
答案 10 :(得分:0)
Swift 4,我使用caseInsensitiveCompare()作为模板进行了String扩展路由(但允许操作数是可选的)。这里是我曾经把它放在一起的游乐场(Swift的新手,所以反馈不仅仅是欢迎)。
import UIKit
extension String {
func caseInsensitiveEquals<T>(_ otherString: T?) -> Bool where T : StringProtocol {
guard let otherString = otherString else {
return false
}
return self.caseInsensitiveCompare(otherString) == ComparisonResult.orderedSame
}
}
"string 1".caseInsensitiveEquals("string 2") // false
"thingy".caseInsensitiveEquals("thingy") // true
let nilString1: String? = nil
"woohoo".caseInsensitiveEquals(nilString1) // false
答案 11 :(得分:0)
您只需编写几行代码即可进行字符串扩展以进行比较
extension String {
func compare(_ with : String)->Bool{
return self.caseInsensitiveCompare(with) == .orderedSame
}
}
答案 12 :(得分:0)
对于Swift 5 忽略大小写并比较两个字符串
var a = "cash"
var b "Cash"
if(a.caseInsensitiveCompare(b) == ComparisonResult.orderedSame){
print("Ok")
}
答案 13 :(得分:-1)
Swift 3
if a.lowercased() == b.lowercased() {
}
答案 14 :(得分:-1)
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'
答案 15 :(得分:-3)
斯威夫特3:
您还可以使用两个字符串函数之间的本地化不区分大小写的比较,并返回Bool
var a = "cash"
var b = "Cash"
if a.localizedCaseInsensitiveContains(b) {
print("Identical")
} else {
print("Non Identical")
}