1. ホーム
  2. objective-c

[解決済み] NSStringの部分文字列を取得する方法は?

2023-07-21 04:56:15

質問

NSStringから値を取得したい場合 @"value:hello World:value" から値を取得したい場合、何を使うべきでしょうか?

私が欲しい返り値は @"hello World" .

どのように解決するのですか?

オプション1:

NSString *haystack = @"value:hello World:value";
NSString *haystackPrefix = @"value:";
NSString *haystackSuffix = @":value";
NSRange needleRange = NSMakeRange(haystackPrefix.length,
                                  haystack.length - haystackPrefix.length - haystackSuffix.length);
NSString *needle = [haystack substringWithRange:needleRange];
NSLog(@"needle: %@", needle); // -> "hello World"

オプション2です。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^value:(.+?):value$" options:0 error:nil];
NSTextCheckingResult *match = [regex firstMatchInString:haystack options:NSAnchoredSearch range:NSMakeRange(0, haystack.length)];
NSRange needleRange = [match rangeAtIndex: 1];
NSString *needle = [haystack substringWithRange:needleRange];

これはあなたの些細なケースには少しオーバーかもしれませんが。

オプション3です。

NSString *needle = [haystack componentsSeparatedByString:@":"][1];

こちらは、分割中に3つの一時的な文字列と配列を作成します。


すべてのスニペットは、検索されたものが実際に文字列に含まれていることを前提としています。