predicateWithFormat:
でワイルドカードを使う事ができる。
1つ目はの a*e
は先頭の文字が a
で間に何文字か挟んで(0文字でもOK)末尾の文字が e
の文字列が条件に合致する。
2つ目の a??le
は先頭の文字が a
で間に2文字挟んで末尾の文字が le
の文字列が条件に合致する。
ちなみに、1つ目の predicate は
[NSPredicate predicateWithFormat:@"SELF BEGINSWITH[c] 'a' AND SELF ENDSWITH[c] 'e'"];
で書いた方が処理は早いので、横着せずに BEGINSWITH
と ENDSWITH
を用いた方がベター。
begin with と end with じゃなくて、begins with と ends with なので注意。
念のため
a*e
は先頭の文字が a
で間に何文字か挟んで(0文字でもOK)末尾の文字が e
という条件で、
SELF BEGINSWITH[c] 'a' AND SELF ENDSWITH[c] 'e'
は a
で始まり e
で終わるという条件なので、文字列が1文字である事も有り得る場合この2つの処理の結果は変わってくる。
今回 BEGINSWITH
ENDSWITH
との比較をしたけど、ワイルドカードは *xx*
とか *x*x
とか x*x??x
とか何でも組み合わせてできちゃうので前提としては BEGINSWITH
ENDSWITH
とはまったくの別物。