NSString(3)

2010. 03. 28
引き続きNSStringクラスの説明です(今回のでまだ半分・・・)。


●文字列の結合(Combining Strings)

・– stringByAppendingFormat:

– (NSString *)stringByAppendingFormat:(NSString *)format ...

指定したフォーマットで文字列を追加して返します
(formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:フォーマット(書式)については『NSStringオブジェクトの書式』を参照してください
(nilを指定することはできません)

...:カンマ区切りで値を指定します

NSString *オブジェクト1 = @"文字列";
NSString *オブジェクト2 = [[NSString alloc] stringByAppendingFormat:@"BST-%d-CHIHAYA", 72]; 


・– stringByAppendingString:

– (NSString *)stringByAppendingString:(NSString *)aString

指定した文字列を追加した新規の文字列を返します
(formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

aString:NSStringオブジェクトに追加する文字列です(nilを指定することはできません)

NSString *オブジェクト1 = @"文字列1";
NSString *オブジェクト2 = @"文字列2";
NSString *オブジェクト3 = [オブジェクト1 stringByAppendingString:文字列2]; 


・– stringByPaddingToLength:withString:startingAtIndex:

– (NSString *)stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex

NSStringオブジェクトを指定した範囲の長さにし、余った文字は取り除き、足りない分は穴埋めして文字列を返します

newLength:NSStringオブジェクトの新たな長さを指定します
padString:穴埋めする文字列を指定します
padIndex:穴埋めする文字列の開始位置を指定します

NSString *オブジェクト = @"BST-72-";
[オブジェクト stringByPaddingToLength:14 withString:@"CHIHAYA" startingAtIndex:0];


●文字列の分割(Dividing Strings)

・– componentsSeparatedByString:

– (NSArray *)componentsSeparatedByString:(NSString *)separator

NSStringオブジェクトの文字列を、指定した文字列で分割した文字配列にして返します

separator:分割に使用する文字列

NSString *オブジェクト = @"BST-72-CHIHAYA";
NSArray *ary = [オブジェクト componentsSeparatedByString:@"-"];
NSLog(@"%@", ary);    //    (BST, 72, CHIHAYA) 


・– componentsSeparatedByCharactersInSet:

– (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator

NSStringオブジェクトの文字列を、指定した文字集合で分割した文字配列にして返します
(componentsSeparatedByString:が単一の文字列で分割するのに対し、複数の文字列を指定できます)

separator:分割に使用する文字集合(nilを指定することはできません)

NSString *オブジェクト = @"http://secondflush2.blog.fc2.com/";
NSCharacterSet *spr = [NSCharacterSet characterSetWithCharactersInString:@".:/"];
NSArray *ary = [オブジェクト = componentsSeparatedByCharactersInSet:spr];
NSLog(@"%@", ary);    //    (http, secondflush2, blog, fc2, com) 


・– stringByTrimmingCharactersInSet:

– (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set

NSStringオブジェクトの文字列の両端から、指定した文字集合を取り除いた文字列を返します
元の文字列が除外する文字集合のみで構成されていた場合、空の文字列を返します

set:除外する文字集合(nilを指定することはできません)
文字集合にはwhitespaceCharacterSet(空白とタブ)やwhitespaceAndNewlineCharacterSet(空白とタブ、改行文字)などの標準文字集合の他、componentsSeparatedByCharactersInSet:でカスタマイズも指定できます

NSString *オブジェクト = @"    B W H    72 55 78    ";
[オブジェクト stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];


・– substringFromIndex:

– (NSString *)substringFromIndex:(NSUInteger)anIndex

先頭から指定した文字位置までを削除した部分文字列を、新規の文字列で返します

anIndex:文字列の中から切り取る部分までの文字位置を指定します
文字列の長さを超える文字位置を指定した場合、NSRangeExceptionで例外を発生させます
文字列の長さと同じ文字位置を指定した場合は、空の文字列を返します

NSString *オブジェクト = @"Air-D Cup";
[オブジェクト substringFromIndex:4];    //    D Cup


・– substringWithRange:

– (NSString *)substringWithRange:(NSRange)aRange

指定した範囲の部分文字列を返します

aRange:切り取る範囲を指定します
元の文字列の範囲を超えてはいけません
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)

NSString *オブジェクト = @"BST-72-CHIHAYA";
[オブジェクト substringWithRange:NSMakeRange(4, 2)];    //    72


・– substringToIndex:

– (NSString *)substringToIndex:(NSUInteger)anIndex

先頭から指定した文字までの部分文字列を、新規の文字列で返します

anIndex:文字列の中から切り取る部分までの文字位置を指定します
文字列と同じ長さまで指定可能です
文字列の長さを超える文字位置を指定した場合、NSRangeExceptionで例外を発生させます

NSString *オブジェクト = @"BST-72-CHIHAYA";
[オブジェクト substringToIndex:6];    //    BST-72

※ 標準文字集合(Creating a Standard Character Set)はNSCharacterSetクラスのメソッドです

+ alphanumericCharacterSetアルファベット、記号、数字
+ capitalizedLetterCharacterSetタイトルケース(一文字目のみ大文字)
+ controlCharacterSet制御・書式文字
(UnicodeのU+0000~U+001FとU+007F~U+009F)
+ decimalDigitCharacterSet10進数の数字(0~9)
+ decomposableCharacterSetUnicode 3.2の全標準文字
(Unicode 2.0で定義されたハングルは含まず)
+ illegalCharacterSet非文字またはUnicode 3.2標準文字で未定義の文字
+ letterCharacterSetアルファベット、記号、表意文字
+ lowercaseLetterCharacterSet小文字のアルファベット
+ newlineCharacterSet改行文字(UnicodeのU+000A~U+000D、U+0085)
+ nonBaseCharacterSet記号
+ punctuationCharacterSet句読点(空白を除く、ピリオド、ダッシュ、カッコなど)
+ symbolCharacterSetシンボル($、+など)
+ uppercaseLetterCharacterSet大文字のアルファベットとタイトルケース
+ whitespaceAndNewlineCharacterSet空白とタブ、改行文字
(UnicodeのU+0020、U+0009、U+000A~U+000D、U+0085)
+ whitespaceCharacterSet空白とタブ(UnicodeのU+0020とU+0009)


●文字と部分文字列の検索(Finding Characters and Substrings)

・– rangeOfCharacterFromSet:

– (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet

指定した文字集合を検索し、最初に見つけた文字集合の範囲を返します
指定した文字集合が見つけられなかった場合、{NSNotFound, 0}を返します

aSet:検索する文字集合(nilを指定することはできません)
(aSetがnilの場合、NSInvalidArgumentExceptionを呼び出します)

NSString *オブジェクト = @"BST-72-CHIHAYA";
[オブジェクト rangeOfCharacterFromSet:@"72"];    //    {4, 2}


・– rangeOfCharacterFromSet:options:

– (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet options:(NSStringCompareOptions)mask

指定した文字集合をオプション付き検索し、最初に見つけた文字集合の範囲を返します
指定した文字集合が見つけられなかった場合、{NSNotFound, 0}を返します

aSet:検索する文字集合(nilを指定することはできません)
(aSetがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearch、NSLiteralSearch、NSBackwardsSearch)を指定します
or演算子『|』で複数オプションを指定可能です

NSString *オブジェクト = @"Makoto73 Yayoi72 Chihaya72";
[オブジェクト rangeOfCharacterFromSet:@"72" option:NSBackwardsSearch];    //    {24, 2}


・– rangeOfCharacterFromSet:options:range:

– (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet options:(NSStringCompareOptions)mask range:(NSRange)aRange

指定した文字集合を範囲とオプション付き検索し、最初に見つけた文字集合の範囲を返します
指定した文字集合が見つけられなかった場合、{NSNotFound, 0}を返します
結合文字などで1文字を検索した結果が1文字以上になる場合があります
(例:文字集合『stru¨del』から『ü』を検索した場合、結果範囲が{3,2}になります)

aSet:検索する文字集合(nilを指定することはできません)
(aSetがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearch、NSLiteralSearch、NSBackwardsSearch)を指定します
or演算子『|』で複数オプションを指定可能です

aRange:検索範囲を指定します
元の文字列の範囲を超えてはいけません
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)

NSString *オブジェクト = @"Makoto73 Yayoi72 Chihaya72";
[オブジェクト rangeOfCharacterFromSet:@"72" option:NSCaseInsensitiveSearch range:NSMakeRange(17, 9)];    //    {24, 2}


・– rangeOfString:

– (NSRange)rangeOfString:(NSString *)aString

指定した文字列を検索し、最初に見つけた文字列の範囲を返します
指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します

aString:検索する文字列(nilを指定することはできません)
(aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

NSString *オブジェクト = @"Makoto73 Yayoi72 Chihaya72";
[オブジェクト rangeOfString:@"Chihaya"];    //    {17, 7}


・– rangeOfString:options:

– (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

指定した文字列をオプション付きで検索し、最初に見つけた文字列の範囲を返します
指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します

aString:検索する文字列(nilを指定することはできません)
(aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearch、NSLiteralSearch、NSBackwardsSearch、NSAnchoredSearch)を指定します
or演算子『|』で複数オプションを指定可能です

NSString *オブジェクト = @"Makoto73 Yayoi72 Chihaya72";
[オブジェクト rangeOfString:@"72" option:NSBackwardsSearch];    //    {24, 2}


・– rangeOfString:options:range:

– (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange

指定した文字列を範囲とオプション付きで検索し、最初に見つけた文字列の範囲を返します
指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します

aString:検索する文字列(nilを指定することはできません)
(aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearch、NSLiteralSearch、NSBackwardsSearch、NSAnchoredSearch)を指定します
or演算子『|』で複数オプションを指定可能です

aRange:検索範囲を指定します
元の文字列の範囲を超えてはいけません
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)

NSString *オブジェクト = @"Makoto73 Yayoi72 Chihaya72";
[オブジェクト rangeOfString:@"72" option:NSCaseInsensitiveSearch range:NSMakeRange(0, 20)];    //    {14, 2}


・– rangeOfString:options:range:locale:

– (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange locale:(NSLocale *)locale

指定した文字列を範囲とオプション付きで検索し、最初に見つけた文字列の範囲を返します
指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します

aString:検索する文字列(nilを指定することはできません)
(aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearch、NSLiteralSearch、NSBackwardsSearch、NSAnchoredSearch)を指定します
or演算子『|』で複数オプションを指定可能です

aRange:検索範囲を指定します
元の文字列の範囲を超えてはいけません
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)

locale:検索文字列と比較するロケールを指定します(nilの場合、現在のロケールになります)
このlocaleでアルゴリズムのチェックをすることもできます
(例:トルコ語環境で大文字/小文字を区別しない条件の場合、『I』(U+0049:Latin Captal Letter I)は『i』(U+0069:Latin Small Letter I)だけでなく『ı』(U+0131:Latin Small Dotkess I)とも同一とみなされます)

NSString *オブジェクト = @"Chihaya72 Yayoi72 Makoto73";
[オブジェクト rangeOfString:@"72" option:NSBackwardsSearch locale:@"en_GB"];    //    {72, 2}

※ 検索と比較オプション(Search and Comparison Options)

NSCaseInsensitiveSearch1大文字と小文字を区別しません
NSLiteralSearch2(文字コードレベルで)文字が完全に一致するものを拾います
NSBackwardsSearch4文字列を文末から検索します
NSAnchoredSearch8文字列中、検索で最初にヒットした文字を拾います
(NSBackwardsSearchでは最後に相当) 
NSNumericSearch64文字列内の数字を数値として比較します
(比較メソッドのみ利用可)
(例:Foo2.txt < Foo7.txt < Foo25.txt)
NSDiacriticInsensitiveSearch128発音区別記号を無視します(例:『ö』と『o』は同じと扱います)
NSWidthInsensitiveSearch256東アジア文字集合における半角と全角を無視します
(例:『a』(U+FF41)と『a』(U+0061)は同じと扱います) 
NSForcedOrderingSearch512並べ替え要素を付加します
例えば、NSCaseInsensitiveSearchで同一と判別される
『aaa』と『AAA』の場合、『aaa』>『AAA』となります 

NSForcedOrderingSeachに関しては自分の訳が怪しいので原文を載せます。

Comparisons are forced to return either NSOrderedAscending or NSOrderedDescending if the strings are equivalent but not strictly equal.
This option gives stability when sorting. For example, “aaa” is greater than "AAA” if NSCaseInsensitiveSearch is specified.


●部分文字列の置換(Replacing Substrings)

・– stringByReplacingOccurrencesOfString:withString:

– (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

targetの文字列をreplacementの文字列に全て置換し、新しい文字列を作ります

target:置換対象になる文字列を指定します
replacement:置換する文字列を指定します

NSString *オブジェクト1 = @"Chihaya:72";
NSString *オブジェクト2 = [オブジェクト1 stringByReplacingOccurrencesOfString:@"72" withString:@"91"]; 


・– stringByReplacingOccurrencesOfString:withString:options:range:

– (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange

指定した範囲とオプションで、targetの文字列をreplacementの文字列に全て置換し、新しい文字列を作ります

target:置換対象になる文字列を指定します

replacement:置換する文字列を指定します

options:置換対象の検索オプションを指定します(上記表『検索と比較オプション』参照)
(『0』を指定するとオプション無しになります)

searchRange:置換対象の検索範囲を指定します

NSStringCompareOptions opt = NSBackwardsSearch;
NSString *オブジェクト1 = @"Chihaya:72 Yayoi:72 Makoto:73";
NSString *オブジェクト2 = [オブジェクト1 stringByReplacingOccurrencesOfString:@"72" withString:@"91" options:opt range:NSMakeRange(0, 12)];    //    Chihaya:91 Yayoi:72 Makoto:73 


・– stringByReplacingCharactersInRange:withString:

– (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement

指定した範囲で文字列中の文字を置換して、新しい文字列を作ります

range:置換対象の検索範囲を指定します
replacement:置換する文字列を指定します

NSString *オブジェクト1 = @"Chihaya:72 Yayoi:72 Makoto:73";
NSString *オブジェクト2 = [オブジェクト1 stringByReplacingCharactersInRange:NSMakeRange(0, 7) withString:@"Mingosu"]; 



参考文献

NSString Class Reference

Cocoa APIとか(iPhoneとか)/NSString

Studying Cocoa/NSString

Wikipedia/Unicode一覧 0000-0FFF

RubyCocoaメモ/PDF文書内を検索する

詳解 Objective-C 2.0 第3版詳解 Objective-C 2.0 第3版
(2011/12/28)
荻原 剛志

商品詳細を見る

0 CommentsPosted in 資料





Wave SoundTouch music system IV
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Wave SoundTouch music system IV
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR