web-dev-qa-db-ja.com

Swift言語で大文字と小文字を区別しない2つの文字列を比較する方法は?

大文字小文字を無視してSwiftの2つの文字列を比較するにはどうすればよいですか?例えば:

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

Var aとvar bを比較するとtrueを返すメソッドはありますか

84
ak_tyagi

これを試して :

古い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")
    }
169
iAnurag

caseInsensitiveCompareメソッドを使用します。

let a = "Cash"
let b = "cash"
let c = a.caseInsensitiveCompare(b) == .orderedSame
print(c) // "true"

ComparisonResult は、どちらのWordが辞書式順序で他のWordより早いかを示します(つまり、どちらが辞書の前に近づいているか)。 .orderedSameは、文字列が辞書の同じ場所に配置されることを意味します

33
dasblinkenlight
if a.lowercaseString == b.lowercaseString {
    //Strings match
}
23
Steve

これを試して:

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")
}
8
Greg

あなた自身を転がすことができます:

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

Swift

正しい方法:

    let a: String = "Cash"
    let b: String = "cash"

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

注意してください: ComparisonResult.orderedSameは、.orderedSameと略記することもできます。

その他の方法:

a。

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

b。

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

c。

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

電話番号の比較例。 Swift 4.2を使用

 var selectPhone = [String]()

    if selectPhone.index(where: {$0.caseInsensitiveCompare(contactsList[indexPath.row].phone!) == .orderedSame}) != nil {
           print("Same value")
     }
     else {
            print("Not the same")
     }
1
ikbal

すべての文字を大文字(または小文字)にして、それらが同じかどうかを確認することもできます。

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")
}
1
milo526

localizedCaseInsensitiveContains:大文字と小文字を区別しない、ロケールを意識した検索を実行して、レシーバーに指定の文字列が含まれているかどうかを返します

if a.localizedCaseInsensitiveContains(b) {
 //returns true if a contains b (case insensitive)
 }

編集済み

caseInsensitiveCompare:NSCaseInsensitiveSearchを唯一のオプションとしてcompare(_:options :)を呼び出した結果を返します。

if a.caseInsensitiveCompare(b) == .orderedSame {
 //returns true if a equals b (case insensitive)
 }
1
cgeek

ほんの数行のコードで、比較のために文字列拡張機能を書くことができます

extension String {

    func compare(_ with : String)->Bool{
        return self.caseInsensitiveCompare(with) == .orderedSame
    } 
}
0
Mujahid Latif
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"))
0
luhuiya

Swift 5の場合、大文字と小文字を無視して2つの文字列を比較します

var a = "cash"
var b = "Cash"
if(a.caseInsensitiveCompare(b) == .orderedSame){
     print("Ok")
}
0
M Murteza

Swift 4では、caseInsensitiveCompare()をテンプレートとして使用して文字列拡張ルートを使用しました(ただし、オペランドはオプションにできます)。ここに私が使った遊び場があります(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
0