【Swift4】文字列(NSString)を任意の文字で検索(完全一致、前方一致、後方一致、部分一致)する方法【Obbjective-C】

2020年8月29日

文字列の中に任意の文字があるかどうか、検索する方法をご紹介します。
検索には、完全一致・前方一致・後方一致・部分一致の4種類があります。それぞれの用途に合わせて使用するといいでしょう。

完全一致

文字列Aと文字列Bが完全に一致しているか確認する方法です。

Swift4

var string : String = "abcdefg"
if string == "abcdefg" { // true
    print("一致")
}
else {
    print("不一致")
}

SwiftではObjectice-Cでよく使う「isEqualToString」の代わりに「==」で判定が可能です。

var string : String = "abcdefg"
let comparisonResult : ComparisonResult = string.compare("abcdefg")
if comparisonResult == .orderedSame { // true
    print("一致")
}
else {
    print("不一致")
}

「==」の他に「compare」を使用した判定方法もあります。

ObjectiveーC

NSString *string = @"abcdefg";
BOOL result = [string isEqualToString:@"abcdefg"];
if (result) { // YES
    NSLog(@"一致");
}
else {
    NSLog(@"不一致");
}
NSString *string = @"abcdefg";
NSComparisonResult comparisonResult = [string compare:@"abcdefg"];
if(comparisonResult == NSOrderedSame) { // YES
    NSLog(@"一致");
}
else {
    NSLog(@"不一致");
}

前方一致

文字列Aの先頭文字列が文字列Bと一致しているか確認する方法です。

Swift4

var string : String = "abcdefg"
let result = string.hasPrefix("abc")
if (result) { // true
    print("一致")
}
else {
    print("不一致")
}

Objective-C

NSString *string = @"abcdefg";
result = [string hasPrefix:@"abc"];
if (result) { // YES
    NSLog(@"一致");
}
else {
    NSLog(@"不一致");
}

後方一致

文字列Aの後方文字列が文字列Bと一致しているか確認する方法です。

Swift4

var string : String = "abcdefg"
let result = string.hasSuffix("efg")
if (result) { // true
    print("一致")
}
else {
    print("不一致")
}

Objective-C

NSString *string = @"abcdefg";
result = [string hasSuffix:@"efg"];
if (result) { // YES
    NSLog(@"一致");
}
else {
    NSLog(@"不一致");
}

部分一致

文字列Aの中に文字列Bが含まれているか確認する方法です。

Swift4

大文字と小文字を区別する
var string : String = "abcdefg"
if string.contains("cde") { // false
    print("一致")
}
else {
    print("不一致")
}
大文字と小文字を区別しない
var string : String = "abcdefg"
if string.lowercased().contains("cde") { // true
    print("一致")
}
else {
    print("不一致")
}

Objective-C

大文字と小文字を区別する
NSString *string = @"abCDEfg";
if ([string rangeOfString:@"cde"].location != NSNotFound) { // NO
    NSLog(@"一致");
}
else {
    NSLog(@"不一致");
}
大文字と小文字を区別しない
NSString *string = @"abCDEfg";
if ([string rangeOfString:@"cde" options:NSCaseInsensitiveSearch].location != NSNotFound) { // YES
    NSLog(@"一致");
}
else {
    NSLog(@"不一致");
}