개발

[아이폰] Objective C 문자열 컨트롤, NSString 메소드 몇가지

지승준 2014. 1. 16. 14:34
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#import <Foundation/Foundation.h>
 
int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool allocinit];
    NSString *str1 = @"This is string A";
    NSString *str2 = @"This is string B";
    NSLog(@"%@",str1);
    //문자열의 갯수 
    NSLog(@"%lu",[str1 length]);
    
    //대소문자 변경 
    NSString *result;
    result = [str1 uppercaseString]; //소문자
    
    NSLog(@"%@",result);
    result = [str1 lowercaseString]; //대문자
    NSLog(@"%@",result);
    
    //두문자열이 같은지 비교 
    if([str1 isEqualToString: str2] == YES){
        NSLog(@"두문자열은 같다");
    }else{
        NSLog(@"두문자열은 같지 않다");
    }
    //문자열 결합 
    result = [str1 stringByAppendingString: str2] ;
    NSLog(@"%@",result);
    
    //처음부터 3개의 문자만 추출하고 싶다 
    result = [str1 substringToIndex:3];
    NSLog(@"%@",result);
    
    // 5자리부터 끝까지 문자열 추출 
    result = [str1 substringFromIndex:5];
    NSLog(@"%@",result);
    
    // 8~13번 문자까지만 분리 
    result = [[str1 substringFromIndex:8] substringToIndex:6];
    NSLog(@"%@",result);
    
    result = [str1 substringWithRange: NSMakeRange(8,6)];
    NSLog(@"%@",result);
    
    //문자열 안에서 문자열 찾기 : 길이, 위치가 객체로 리턴 
    NSRange subRange = [str1 rangeOfString: @"strindg"];
        
    if(subRange.location == NSNotFound){
        NSLog(@"String Not Found");
    }else{
        NSLog(@"index : %lu, length: %lu",subRange.location, subRange.length);
    }
    
    //문자열 첫 글자의 대소문자를 확인하여 변환하기 
    NSString *convertString = @"aBC";
    NSString *convertStringFirst = [convertString substringToIndex:1]; //첫번째 글자
    NSString *convertStringUpper = [convertStringFirst uppercaseString];//강제로 대문자로 변환 
    
    if ([convertStringFirst isEqualToString:convertStringUpper]){
        NSLog(@"%@ lowercase = %@", convertString,[convertStringFirst lowercaseString]);
    }else{
        NSLog(@"%@ uppercase = %@",  convertString,[convertStringFirst uppercaseString]);
    }
    
    [pool drain];
    return 0;
}
 
cs


NSString 

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

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

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

1
NSString *str = @"hello";
cs


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


문자열 생성

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

c언어의 printf() 같이 인수를 이용해새로운 문자열을 만들어서 반환합니다.

1
2
NSString *str = [NSString stringWithFormat:
@"first var %d, second var %d"12];
cs

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


글자수 검색

1
- (NSUInteger)length;
cs

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

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

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

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

1
NSUInteger length = [str length];
cs

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


문자열 비교

1
2
- (BOOL)isEqualToString:
       (NSString *)aString;
cs

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

 YES, NO 를 반환합니다.

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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 객체 같음");
}
cs


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


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

1
2
3
- (NSComparisonResult)compare:
(NSString *)string 
  options:(NSStringCompareOptions)mask;
cs

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

NSCaseInsensitiveSearch : 대소문자 무시

NSLiteralSearch : 대소문자 구분

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

실제 숫자로 처리


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

1
2
3
4
5
6
7
8
9
10
NSString *str1 = @"first";
NSString *str2 = @"First";
 
if (![str1 isEqualToString:str2]) {
  NSLog(@"str1/str2 문자열 다름");
}
if ([str1 compare:str2
 options:NSCaseInsensitiveSearch] == NSOrderedSame) {
  NSLog(@"str1/str2 문자열 같음");
}
cs

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


문자열 비교(포함)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (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 
포함되어 있음");
}
cs


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


대소문자 변한

1
2
- (NSString *)uppercaseString;
- (NSString *)lowercaseString;
cs


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

1
2
3
4
5
6
7
NSString *str = @"string";
str = [str uppercaseString];
NSLog(@"%@",str); 
 //str : "STRING"
str = [str lowercaseString];
NSLog(@"%@",str);
 //str : "string"
cs


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

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

1
2
3
4
5
NSString *numString = @"100";
int realNumber = [numString intValue];
int x = realNumber + 100;
NSLog(@"%d",x);
//x = 200
cs


float로 쓸땐 [numString floatValue];

double은 [numString doubleValue];