Objective-C学習-文字列タイプNSStringとNSMutable String
6877 ワード
C言語に比べて、一般的に対象に向けた言語は、C++のstring、JAVAのStringなどの文字列を専門に扱うタイプがあります。 Objective-Cはもちろん、文字列を専門に扱うタイプもあります。NSStringといいます。
Objective-Cの文字列も、NSString(可変文字列ではない)、NSMutable String(可変文字列)、NSMutable String類はNSStringのサブクラスに分けられています。
注:Objective-Cの文字列は@の「内容」を使います。前の文字列は必ず@を使います。
(1)NSString------可変文字列ではない
(2)NSMumtable String---可変文字列(可変文字列のため) は、可変文字列に継承されています。上記の方法でも可変文字列は使えますが、初期化には定義できないものがあります。以下に説明します。
//文字列とデータの応用
たとえば:
NSString*str=@「This is my OBjective-C Project!」
NSAray*arr= [str] components SeparatedByString:@"///。文字列をスペースで分割し、配列に値を入れるという意味です。
NSString*str 1=[arr] components JoinedByString:@"///。配列を「」でつなぐという意味です。
Objective-Cの文字列も、NSString(可変文字列ではない)、NSMutable String(可変文字列)、NSMutable String類はNSStringのサブクラスに分けられています。
注:Objective-Cの文字列は@の「内容」を使います。前の文字列は必ず@を使います。
(1)NSString------可変文字列ではない
//
// main.m
// NSString( )
//
// Created by YueWen on 15/9/8.
// Copyright (c) 2015 YueWen. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
/**
*
*/
/* , url,data,path , */
//objc ,init NSObject , ( ) NSObject
NSString * s1 = [[NSString alloc] init];
// java , java
NSString * s2 = [NSString new];
// s1 s3
NSString * s3 = [NSString stringWithString:s1];
// ,
NSString * s4 = [NSString stringWithFormat:@" %d !",2];
// C objc NSString
NSString * s5 = [NSString stringWithUTF8String:"RunIntoLove"];
/* 3 s3,s4,s5 , , , */
// s1 s3
NSString * s3_1 = [[NSString alloc ]initWithString:s1];
// ,
NSString * s4_1 = [[NSString alloc ]initWithFormat:@" %d !",2];
// C objc NSString
NSString * s5_1 = [[NSString alloc ]initWithUTF8String:"RunIntoLove"];
//
NSString * s6 = @"RunIntoLove";
/* */
/**
* s6 2 , ,c = 'n'
*/
unichar c = [s6 characterAtIndex:2];
/**
* s6 3( 3 )
* :s7 = IntoLove
*/
NSString * s7 = [s6 substringFromIndex:3];
/**
* 3( 3)
* :s8 = Run
*/
NSString * s8 = [s6 substringToIndex:3];
/**
* ,
*
* @param 2 2
* @param 3 3
* :s9 = nIn
* @return
*/
NSString * s9 = [s6 substringWithRange:NSMakeRange(2, 3)];
/**
*
* s11 = RUNINTOLOVE
*/
NSString * s11 = [s6 uppercaseString];
/**
*
* s12 = runintolove
*/
NSString * s12 = [s6 lowercaseString];
/**
* ,
*
* s13 = Runintolove
*/
NSString * s13 = [s6 capitalizedString];
/**
* , NSComparisonResult
* NSCompareisonResult
* NSOrderedAscending , s6
* NSOrderedSame
* NSOrderedDescending , s6
* NSOrderedSame
*/
NSComparisonResult result = [s6 compare:@"RunIntoLove"];
/**
* , BOOL
*
* YES
*/
BOOL equal = [s6 isEqualToString:@"RunIntoLove"];
/**
* @"Run"
* YES
*/
BOOL prefix = [s6 hasPrefix:@"Run"];
/**
* @“Love”
* YES
*/
BOOL suffix = [s6 hasSuffix:@"Love"];
/**
* @“nIn”
* YES
*/
BOOL contain = [s6 containsString:@"nIn"];
/**
* @“Love”
* range
* loaction( ) = 7
* length ( ) = 4
*/
NSRange range = [s6 rangeOfString:@"Love"];
/* */
NSString * s10 = @"123";
//
int a = [s10 intValue];
NSInteger b = [s10 integerValue];
long long c1 = [s10 longLongValue];
//
float d = [s10 floatValue];
double e = [s10 doubleValue];
return 0;
}
(2)NSMumtable String---可変文字列(可変文字列のため) は、可変文字列に継承されています。上記の方法でも可変文字列は使えますが、初期化には定義できないものがあります。以下に説明します。
//
// main.m
// NSMutableString( )
//
// Created by YueWen on 15/9/8.
// Copyright (c) 2015 YueWen. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
/**
*
*/
/* , */
// ,objc , mString1 NSString
NSMutableString * mString1 = @"RunIntoLove";
// , ,
NSMutableString * mString2 = [[NSMutableString alloc] init];
NSMutableString * mString3 = [NSMutableString string];
// java , java
NSMutableString * mString4 = [NSMutableString new];
// 3
NSMutableString * mString5 = [[NSMutableString alloc]initWithCapacity:3];
NSMutableString * mString6 = [NSMutableString stringWithCapacity:3];
// ,
NSMutableString * mString7 = [NSMutableString stringWithString:@"RunIntoLove"];
/*
*
*
*/
/**
*
* 3( ) @"Run"
* :mString7 = @"RunIntoLove"
* :mString7 = @"RunRunIntoLove"
*/
[mString7 insertString:@"Run" atIndex:3];
/**
*
* NSRange
* ( ) , 3
* :mString7 = @"RunRunIntoLove"
* :mString7 = @"RunIntoLove"
*/
[mString7 deleteCharactersInRange:NSMakeRange(3, 3)];
/**
*
* :mString7 = @"RunIntoLove"
* :mString7 = @"RunIntoLoveYES"
*/
[mString7 appendString:@"YES"];
/**
*
* :mString7 = @"RunIntoLoveYES"
* :mString7 = @"RunIntoLoveYES8"
*/
[mString7 appendFormat:@"%d",8];
/**
*
* :mString7 = @"RunIntoLoveYES8"
* :mString7 = @"YueWen"
*/
[mString7 setString:@"YueWen"];
/**
*
* 3 , 3
* :mString7 = @"YueWen"
* :mString7 = @"YueRunIntoLove"
*/
[mString7 replaceCharactersInRange:NSMakeRange(3, 3) withString:@"RunIntoLove"];
return 0;
}
//文字列とデータの応用
たとえば:
NSString*str=@「This is my OBjective-C Project!」
NSAray*arr= [str] components SeparatedByString:@"///。文字列をスペースで分割し、配列に値を入れるという意味です。
NSString*str 1=[arr] components JoinedByString:@"///。配列を「」でつなぐという意味です。