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------可変文字列ではない
    
//
//  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:@"///。配列を「」でつなぐという意味です。