[iOS]查詢陣列NSArray中是否包含指定的元素
一 問題描述
查詢陣列中是否包含指定
二 問題解決
方法一
NSArray *array [email protected][@"abc123", @"cde234" , @"fgh456", @"ijk567", @"KLm567", @"MnO890", @"opq012", @"Rst123"];
//匹配字串,反回結果, SELF==表示陣列中每一個元素
NSString *match1 = @"MnO890";
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF == %@" , match1];
NSArray *results1 = [array filteredArrayUsingPredicate:predicate1];
方法二
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:@"opq012"]) {
NSLog(@"%@-索引%d",obj, (int)idx);
}
}];
三 拓展延伸
如何使用謂詞NSPredicate實現快速尋找。
先看下定義
NSPredicate *ca = [NSPredicate predicateWithFormat:(NSString *), ...];
說明:
Format:有如下幾種規則
(1)比較運算子>,<,==,>=,<=,!=
可用於數值及字串
例:@"number > 100"
(2)範圍運算子:IN、BETWEEN
例:@"number BETWEEN {1,5}"
@"address IN {'shanghai','beijing'}"
(3)字串本身:SELF
例:@“SELF == ‘APPLE’"
(4)字串相關:BEGINSWITH、ENDSWITH、CONTAINS
例:@" name CONTAIN[cd] 'ang'" //包含某個字串
@"name BEGINSWITH[c] 'sh'" //以某個字串開頭
@"name ENDSWITH[d] 'ang'" //以某個字串結束
注:[c]不區分大小寫[d]不區分發音符號即沒有重音符號[cd]既不區分大小寫,也不區分發音符號。
(5)萬用字元:LIKE
例:@"name LIKE[cd] '*er*'" //*代表萬用字元,Like也接受[cd].
@"name LIKE[cd] '???er*'"
(6)正則表示式:MATCHES
例:NSString *regex = @"^A.+e$"; //以A開頭,e結尾
@"name MATCHES %@",regex"
具體使用方法如下
1.NSString物件
NSArray *array [email protected][@"abc123", @"cde234" , @"fgh456", @"ijk567", @"KLm567", @"MnO890", @"opq012", @"Rst123"];
//匹配字串,反回結果, SELF==表示陣列中每一個元素
NSString *match1 = @"MnO890";
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF == %@", match1];
NSArray *results1 = [array filteredArrayUsingPredicate:predicate1];
//近似匹配字串,類似SQL中的語法
NSString *match2 = @"fgh45";
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"SELF contains %@", match2];
NSArray *results2 = [array filteredArrayUsingPredicate:predicate2];
//不區分大小寫匹配
NSString *match3 = @"klm567";
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"SELF like[cd] %@", match3];
NSArray *results3 = [array filteredArrayUsingPredicate:predicate3];
//正則匹配
NSString *match4 = @"[a-zA-Z0-9]{6}";
NSPredicate *predicate4 = [NSPredicate predicateWithFormat:@"SELF matches %@", match4];
NSArray *results4 = [array filteredArrayUsingPredicate:predicate4];
NSLog(@"%@\n%@\n%@\n%@\n",results1,results2,results3,results4);
輸出結果
(
MnO890
)
(
fgh456
)
(
KLm567
)
(
abc123,
cde234,
fgh456,
ijk567,
KLm567,
MnO890,
opq012,
Rst123
)
2.含有屬性的物件
@interface Person: NSObject
{
NSString *_name;
NSString *_telephone;
NSInteger _id;
}
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *telephone;
@property (nonatomic, assign) NSInteger id;
@end
1).等於查詢
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@", "張三"];
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];
2).模糊查詢
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name CONTAINS %@", @"A"]; //predicate只能是物件
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];
相關推薦
[iOS]查詢陣列NSArray中是否包含指定的元素
一 問題描述 查詢陣列中是否包含指定 二 問題解決 方法一 NSArray *array [email protected][@"abc123", @"cde234" , @"fgh456", @"ijk567", @"KLm
php 字串中是否包含指定字串的多種方法
編寫程式的時候,經常要處理字串,最基本就是字串的查詢,在php檢測字串中是否包含指定字串可以使用正則,如果你對正則不瞭解,那麼有幾個函式可以為您提供方便。 1. strstr strstr() 函式搜尋一個字串在另一個字串中的第一次出現。 該函式返回字串的其餘部分(從匹配點)。如果未找到所搜
PostgreSQL: 如何判斷字串中是否包含指定字元。
今天有開發人員問到: PostgreSQL 中是否有函式可以判斷一個字串中是否包含指定字元,如果包 含則返回 ture ,否則返回 false,例如,如果字串 'abcde' 中包含 'ab' 則返回 true,於是想了想,共總 結以下三種方法,暫且不考慮效能。 一 方法一: 使用
Query判斷陣列中是否包含某個元素
JQuery判斷陣列中是否包含某個元素使用$.inArray("js", arr); var arr = [ "xml", "html", "css", "js" ]; $.in
Map.containsKey方法——判斷Map集合物件中是否包含指定的鍵名
containsKey方法用來判斷Map集合物件中是否包含指定的鍵名。 語法 boolean containsKey(Object key) 返回值:如果Map集合中包含指定的鍵名,則返回true;否則返回false。 引數:key是要查詢的Map集合的鍵名物件。
【C#】判斷字串中是否包含指定字串,contains與indexof方法效率問題
1 class Program 2 { 3 private const int N = 10000000; 4 private static Stopwatch watch = new Stopwatch(); 5 static v
判斷陣列中是否包含某元素,判斷字串中是否包含某字串
let arr = [1, 2, 3, 4]; if (arr.indexOf('1') > -1) {} //判斷1是否在陣列arr中,true=是 let str = string; if (str.indexOf('t') !== -1) {}&nb
js 陣列去重 + 是否包含指定字串 + 深淺拷貝+數組合並
window.uniq=function (array){ array.sort(); var temp=[array[0]]; for(var i = 1; i < array.length; i++){
shell-判斷指定檔案中是否包含指定的字串
來自百度 grep "prod" /home/admin/gitrep/otp/otp-webapp-api/src/main/webapp/WEB-INF/web.xml > /dev/n
shell提取指定列並判斷提取結果中是否包含指定字串
判斷第一列是否包含某一個關鍵字,如果與關鍵字相等,則輸出當前行的最後一列內容。 fileType=$( blkid | awk '{if($1=="關鍵字") {print $NF}}') 然後,在判斷filetype中是否包含指定的字串, if echo $fil
Java中高效判斷陣列中是否包含某個元素。
如何檢查一個數組(無序的)是否包含一個特定的值呢?這是一個在Java中經常用到的並且非常有用的操作。本文將分析幾種常見用法及其時間成本。1、使用 ava.util.Arrays.asList(arr)
判斷陣列物件中是否包含某個物件,判斷2個物件是否相等
var arr =[ {name:'zhangsan'}, {name:'lisi'}, {name:'wangwu'} ]; var json1 = {name:"zhangsan"}; // 方法一:(相容ie8) console.log(JSON.stri
java如何判斷陣列中是否包含某元素
有兩種方法可以判斷陣列是否包含元素: 方法1, 將陣列轉換為list,然後使用list的contains方法來判斷: Arrays.asList(...).contains(...) 方法2,遍歷陣列判斷: publicstatic<T>boolean c
Java中如何高效的判斷陣列中是否包含某個元素
如何檢查一個數組(無序)是否包含一個特定的值?這是一個在Java中經常用到的並且非常有用的操作。同時,這個問題在Stack Overflow中也是一個非常熱門的問題。在投票比較高的幾個答案中給出了幾種不同的方法,但是他們的時間複雜度也是各不相同的。本文將分析幾種常見用法
判斷 Map 中是否包含指定的 key 和 value
重寫name的hashcode()和equals()方法 package com.imooc.collection; import java.util.HashSet; import java.util.Set; /** * 學生類 * @author
java中如何高效的判斷陣列中是否包含某個元素---
package zaLearnpackage; import org.apache.commons.lang3.ArrayUtils; import java.util.Arrays; import java.util.HashSet; import java.uti
判斷字串中是否包含指定字元或特殊字元
Pattern p = Pattern.compile("[@#$%^&*]"); Matcher m = p.matcher(s); boolean match = m.find(); 如果
在Java中如何高效判斷陣列中是否包含某個元素
如何檢查一個數組(無序)是否包含一個特定的值?這是一個在Java中經常用到的並且非常有用的操作。同時,這個問題在Stack Overflow中也是一個非常熱門的問題。在投票比較高的幾個答案中給出了幾種不同的方法,但是他們的時間複雜度也是各不相同的。本文將分析
sqlserver查詢所有表中是否包含字元並替換
declare @str varchar(100),@replaceStr varchar(100) --設定要模糊搜尋的字串 set @str='蘇州工業園區' --設定替換的字串 set @replaceStr='' declare @s varchar(8000) d
Jsp jstl表示式中是否包含指定字串
需求: 根據不同的字串顯示對應的東西。 比如,一個單子裡面包含批銷單與退訂單,批銷單號是 'P' 開頭,退訂單是 'BL' 開頭,要根據不同的字串顯示不同的單號,此時就會用到JSTL表示式中的FN:含有 語法: <c:if test="${fn:con