0

NSString の単語または音節の位置 (インデックス) を取得する必要があります。どこから始めればよいかわからないため、コードを投稿できず申し訳ありません。私は Web サービスを使用しており、サービスは文の単語または音節に戻ってきて、色を教えてくれるので、文の単語の色を変更する必要があります。文字の色を変更する方法はわかりましたが、そのインデックスを知る必要があります。手がかりや助けに本当に感謝します。前もって感謝します。

4

2 に答える 2

3

文字列内の単語を取得するには、次のように呼び出します。

    NSString *string = @"How to get index";
    NSArray *words = [string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSLog(@"%lu",[words indexOfObject: @"get"]); // outputs 2 (starts at 0)

音節による区切りは言語に依存し、はるかに困難です。

于 2013-10-02T11:39:20.970 に答える
0

インデックスで単語を列挙する:

NSString *s = @"How to get index of word or syllable in NSString";
__block NSUInteger i = 0;
[s enumerateSubstringsInRange:NSMakeRange(0, [s length])
                      options:NSStringEnumerationByWords
                   usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                       NSLog(@"%lu %@", i++, substring);
                   }];

それは印刷されます

0 How
1 to
2 get

同等の方法は次のとおりです。

NSUInteger words = 0;
NSScanner *scanner = [NSScanner scannerWithString: s];
NSString *capture;
NSCharacterSet *whiteSpace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
while ([scanner scanUpToCharactersFromSet:whiteSpace intoString:&capture]){
    NSLog(@"%lu %@", words++, capture);
}

ただし、セパレータとしてスペース、タブ、および改行に依存しています。最初の方法の方が優れています。

于 2013-10-02T11:40:20.537 に答える