1

Objective Cで次の問題があります。より大きなコンテキストでは、文字列で部分文字列を検索し、そのような最初の部分文字列が配置されている位置を取得したいと思います。また、後ろから検索を始めてほしい。たとえば、「K」を検索して「K123K」で目的の関数を呼び出すと、後ろから開始するため、結果は3になります。

マイコードでは、NSDataオブジェクトを検索する方が効率的です。これは、NSDataオブジェクトを読み込んだためです。そこで、提案したメソッドが機能するかどうかを確認するために、少しテストコードを試してみました。

    NSString *testString = @"01K234567K";
    NSData *testData = [testString dataUsingEncoding:NSUTF8StringEncoding];
    NSString *testLetter = @"K";
    NSData *kData = [testLetter dataUsingEncoding:NSUTF8StringEncoding];
    NSRange whereisK = [testData rangeOfData:kData options:NSBackwardsSearch      range:NSMakeRange(0, [testData length])];
    NSLog(@"loc: %d, len: %d",whereisK.location,whereisK.length);

結果は私の予想に反しており、rangeOfDataはまだ正面から検索を開始しているようです。

    loc: 2, len: 1

何が間違っているのか本当にわかりません。NSBackwardsSearchはオプションとしてその仕事をしていないようです!私はどんな助けや提案にも満足しています...

4

1 に答える 1

1

オプションの正しい値はですNSDataSearchBackwards。使用しているオプションは、NSString検索に使用されます。NSDataのドキュメントを読むことができます。

于 2012-08-06T20:02:35.670 に答える