본문 바로가기
모바일개발(Mobile Dev)/IOS개발(ObjectC)

NSString 문자열 다루기

by 테크한스 2015. 9. 9.
반응형

// 빈 문자열 생성
str3 = [NSString string];


// 문자열로 새로운 문자열 생성
str3 = [NSString stringWithString:@"stringWithString"];
NSLog(@”%@”, str3);

str3 = [[NSString alloc] initWithString:@”initWithString”];
NSLog(@”%@”, str3);
[str3 release];


// 문자열 길이
NSLog(@”length of %@ : %i”, str1, [str1 length]);
NSLog(@”length of %@ : %i”, str2, [str2 length]);


// 문자열 복사
tmp = [NSString stringWithString:str1];
NSLog(@”tmp : %@”, tmp);


// 문자열 합치기 1
tmp = [str1 stringByAppendingString:str2];
NSLog(@”%@ + %@ = %@”, str1, str2, tmp);

// 문자열 합치기 2

NSMutableString *string1 = @"This is";

NSString *string2 = @" a test.";
[string1 appendString:string2];


// 문자열 비교
tmp = str1;
if ( [str1 isEqualToString:tmp] == YES )
NSLog(@”%@ == %@”, tmp, str1);
else
NSLog(@”%@ != %@”, tmp, str1);


// 문자열 비교(대소문자 구분)
compareResult = [str1 compare:str2];
if (compareResult == NSOrderedAscending)
NSLog(@”%@ < %@”, str1, str2);
else if (compareResult == NSOrderedSame)
NSLog(@”%@ == %@”, str1, str2);
else
NSLog(@”%@ > %@”, str1, str2);


// 문자열 비교(대소문자 구분하지 않음)
compareResult = [str1 caseInsensitiveCompare:str2];
if (compareResult == NSOrderedAscending)
NSLog(@”%@ < %@”, str1, str2);
else if (compareResult == NSOrderedSame)
NSLog(@”%@ == %@”, str1, str2);
else
NSLog(@”%@ > %@”, str1, str2);


// 첫문자가 대문자이고 나머지가 소문자인 문자열 리턴
tmp = [str2 capitalizedString];
NSLog(@”%@”, tmp);


// 대문자로 변환
tmp = [str1 uppercaseString];
NSLog(@”%@ -> %@”, str1, tmp);


// 소문자로 변환
tmp = [str2 lowercaseString];
NSLog(@”%@ -> %@”, str2, tmp);


// UTF-8 형식의 문자열 리턴
const char* utf8str = [str1 UTF8String];


// 특정 인덱스의 유니코드 문자 반환
unichar ch = [str2 characterAtIndex:7];
NSLog(@”%c”, ch);


// 특정 인덱스까지의 문자열 반환
tmp = [str1 substringToIndex:15];
NSLog(@”%@”, tmp);


// 특정 인덱스부터 문자열 끝까지 반환
tmp = [str2 substringFromIndex:9];
NSLog(@”%@”, tmp);


// 문자열 중간부분 반환
tmp = [str1 substringWithRange:NSMakeRange(7, 14)];
NSLog(@”%@”, tmp);


// 문자열 내부 검색
range = [str2 rangeOfString:@"Power"];
if (range.location == NSNotFound)
NSLog(@”not found”);
else
NSLog(@”at index %i, length %i”, range.location, range.length);


// 문자열이 특정 문자열로 시작하는지 확인
BOOL bRet = [str1 hasPrefix:@"Obj"];
if (bRet)
NSLog(@”Obj로 시작하는 문자열”);


// 문자열이 특정 문자열로 끝나는지 확인
bRet = [str2 hasSuffix:@"Power"];
if (bRet)
NSLog(@”Power 로 끝나는 문자열”);


// 문자열을 double 값으로 변환
double dblValue = [strNum doubleValue];
NSLog(@”%g”, dblValue);


// 문자열을 float 값으로 변환
float fValue = [strNum floatValue];
NSLog(@”%f”, fValue);


// 문자열을 int 값으로 변환
int iValue = [strNum intValue];
NSLog(@”%i”, iValue);


// 임의의 길이를 가진 빈 문자열 생성
mutableString = [NSMutableString stringWithCapacity:10];
mutableString = [[NSMutableString alloc] initWithCapacity:10];
[mutableString release];

mutableString = [NSMutableString stringWithString:str2];


// 특정 인덱스 위치에 문자열 넣기
[mutableString insertString:@"most " atIndex:9];
NSLog(@”%@”, mutableString);


// 문자열 끝에 새로운 문자열 붙이기
[mutableString appendString:@" dev tool!!"];
NSLog(@”%@”, mutableString);


// 특정 범위 삭제
[mutableString deleteCharactersInRange:NSMakeRange(23, 12)];
NSLog(@”%@”, mutableString);


// 특정 문자열 검색 후 삭제
range = [mutableString rangeOfString:@"Power"];
if (range.location != NSNotFound)
{
[mutableString deleteCharactersInRange:range];
NSLog(@”%@”, mutableString);
}


// 문자열 설정
[mutableString setString:@"xCode is Powerful. "];
NSLog(@”%@”, mutableString);


// 특정 범위를 새로운 문자열로 대치
[mutableString replaceCharactersInRange:NSMakeRange(0, 5) withString:@"Apple xCode"];
NSLog(@”%@”, mutableString);


// 특정 문자를 모두 대치
NSString* searchWord = @”o”;
NSString* replaceWord = @”0″;
[mutableString replaceOccurrencesOfString:searchWord withString:replaceWord options: (NSStringCompareOptions)nilrange:NSMakeRange(0, [mutableString length])];

NSLog(@”%@”, mutableString);



NSString 

----------------------------------------------------------------------------


<Foundation 프레임워크에 포함된 class>



문자열을 다루는데 사용됩니다.


NSString *str = @"hello";




----------------------------------------------------------------------------

문자열 생성


+(id)stringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);


c언어의 printf() 같이 인수를 이용해새로운 

문자열을 만들어서 반환합니다.


NSString *str = [NSString stringWithFormat:

@"first var %d, second var %d"12];






----------------------------------------------------------------------------

글자수 검색


- (NSUInteger)length;


문자열의 문자수를 반환합니다.

유니코드 다국어 표준을 사용하여, 

1byte 이상의 문자도 정상적으로 반환됩니다.

strlen()의 byte 계산 없이, 한글도 정상적으로 반환 됨.


NSUInteger length = [str length];




----------------------------------------------------------------------------

문자열 비교


- (BOOL)isEqualToString:

       (NSString *)aString;


자신과 인수로 받은 문자열을 비교해서

 YES, NO 를 반환합니다.

'==' 을 사용하면 문자열이 아니라, 

객체의 포인터를 비교합니다.




NSString *str1 = @"first";

NSString *str2 = 

[NSString stringWithFormat:@"%@",str1];


NSString *str3 = str1;


if ([str1 isEqualToString:str2]) {

  NSLog(@"str1/str2 문자열 같음");

}


if (str1 != str2) {

  NSLog(@"str1/str2 객체 다름");

}


if (str1 == str3) {

  NSLog(@"str1/str3 객체 같음");

}





----------------------------------------------------------------------------

문자열 비교(대소문자 무시)


- (NSComparisonResult)compare:

(NSString *)string 


  options:(NSStringCompareOptions)mask;



파라미터에 or 연산자 사용가능함.

NSCaseInsensitiveSearch : 대소문자 무시

NSLiteralSearch : 대소문자 구분

NSNumericSearch : 숫자를 아스키값이 아니라, 

실제 숫자로 처리



두 문자열이 같으면 NSOrderedSame을 반환.



NSString *str1 = @"first";

NSString *str2 = @"First";



if (![str1 isEqualToString:str2]) {

  NSLog(@"str1/str2 문자열 다름");

}



if ([str1 compare:str2

 options:NSCaseInsensitiveSearch] == NSOrderedSame) {


  NSLog(@"str1/str2 문자열 같음");

}





----------------------------------------------------------------------------

문자열 비교(포함)


- (BOOL)hasPrefix:(NSString *)aString;

문자열 앞부분과 인수 비교


- (BOOL)hasSuffix:(NSString *)aString;

문자열 끝부분과 인수 비교


- (NSRange)rangeOfString:(NSString *)aString;

문자열 전체에서 특정문자가 있는지 검색

(위에 compare에서 사용한 옵션 사용 가능)

찾으려는 문자열이 없으면 NSNotFound 반환 





NSString *str1 = @"start nsstring search";


if ([str1 hasPrefix:@"sta"]) {

  NSLog(@"sta 시작함");

}


if ([str1 hasSuffix:@"search"]) {

  NSLog(@"search 끝남");

}


NSRange range;

range = [str1 rangeOfString:@"nsstring"];


if (range.location != NSNotFound) {

  NSLog(@"문자열에 nsstring 

포함되어 있음");


}






----------------------------------------------------------------------------

대소문자 변한



- (NSString *)uppercaseString;

- (NSString *)lowercaseString;



문자열에 포함된 모든 문자를 대문자/소문자로 변경합니다.




NSString *str = @"string";


str = [str uppercaseString];

NSLog(@"%@",str); 

 //str : "STRING"


str = [str lowercaseString];

NSLog(@"%@",str);

 //str : "string"







----------------------------------------------------------------------------

형변환> NSString  -> int, float, NSNumber…


NSString *numString = @"100";

int realNumber = [numString intValue];


int x = realNumber + 100;


NSLog(@"%d",x);

//x = 200




float로 쓸땐 [numString floatValue];

double은 [numString doubleValue];

. . .


www.devcel.co.kr



Read more: http://underfree.tistory.com/23#ixzz2M58Q2RyU


Posted by UnderFree

 

반응형