13

この方法で文字列を一致させる必要があります。*myString* ここで、*は任意の部分文字列を意味します。どの方法を使用すればよいですか?

手伝ってくれませんか。

4

3 に答える 3

25

iPhone OS 3.2以降の場合は、NSRegularExpressionSearchを使用してください。

NSString *regEx = [NSString stringWithFormat:@".*%@.*", yourSearchString];
NSRange range = [stringToSearch rangeOfString:regEx options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {

}
于 2010-12-21T00:16:03.863 に答える
11

*(ワイルドカード文字)を使用して実際の検索を実行することはできませんが、通常は同等の処理を実行できます。

検索と同等theTerm*

if ([theString hasPrefix:@"theTerm"]) {

検索と同等*theTerm

if ([theString hasSuffix:@"theTerm"]) {

または、NSString以下に示すカテゴリを使用すると、以下を検索するのと同じです*theTerm*

if ([theString containsString:@"theTerm"]) {

カテゴリは、クラスに追加する単なる新しいメソッド(関数など)です。sを扱うよりも、ある文字列に別の文字列が含まれていると考える方が一般的に理にかなっているので、次のように書きましたNSRange

// category on NSString
@interface NSString (MDSearchAdditions)
- (BOOL)containsString:(NSString *)aString;
@end

@implementation NSString (MDSearchAdditions)

- (BOOL)containsString:(NSString *)aString {
  return [self rangeOfString:aString].location != NSNotFound;
}

@end
于 2010-12-21T00:06:23.690 に答える
0

さらに進化したものが必要な場合は、https://github.com/dblock/objc-ngramを試してください。

于 2014-02-27T17:36:24.667 に答える