2012-03-15 5 views
2

私がNSString次き:終わりこのNSStringでNSRangeを使用するにはどうすればよいですか?

productID = @"com.sortitapps.themes.pink.book"; 

を、 "本は" 何もすることができます.... "音楽"、 "映画"、 "ゲーム" など

私がする必要がピンクという単語の後に3番目のピリオドを見つけて、最後の「ブック」の単語を別のものに置き換えることができます。 NSRangeでこれをどうやって行うのですか?基本的に私はこれを必要とする:

partialID = @"com.sortitapps.themes.pink."; 

答えて

7

あなたはドットのための後方検索を試してみて、所望の範囲を得るために、結果を使用することができます。

NSString *str = @"com.sortitapps.themes.pink.book"; 
NSUInteger dot = [str rangeOfString:@"." options:NSBackwardsSearch].location; 

NSString *newStr = 
    [str stringByReplacingCharactersInRange:NSMakeRange(dot+1, [str length]-dot-1) 
           withString:@"something_else"]; 
2

まあ、これはあなたが「カンニング」とこれを行うことにより、コードを保存することができ、あなたの特定のケースでは、文字を見つけるための一般的な解決策ではないが:

基本的に
[productID stringByDeletingPathExtension]; 

私はこの名前をファイル名として扱い、この目的のためにNSStringメソッドを使って最後の(そして最後の)拡張子を削除しています。

2

-[NSString componentsSeparatedByString:@"."]を使用してコンポーネントに分割し、希望する値で新しい配列を作成し、[NSArray componentsJoinedByString:@"."]を使用して、変更した配列を再度文字列に結合することができます。

+0

NSRangeはこれに対する正しい解決策ですが、私はそれが理解しやすいですので、代わりにあなたのソリューションを使用して終了操作します。これが本当に使用されるべきでない理由は、Apple/iOSが配列の順序が正しいことを保証しないためです(実際にはそうですが)。 –

+0

実際には、[NSString Class Reference](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html)から:_配列の部分文字列が表示されます彼らが受信機でした順序で。 – EmilioPelaez

+0

はい、私の答えはこの質問begat質問です:) – Kekoa

関連する問題