iOS開發-Day17-OC NSString / NSMutableString常用方法

在OC中,NSString對象是非常重要的一個對象,也是最基礎的一個對象,是用來處理字符串的常用類,和Java中的String類非常相似,而且他的一些方法也是很類似的。

關於NSString的一些函數的使用,直接用下面的例子說明了

    // NSString

    //————————————1、字符串的創建——————————————

    // 1>最常見的創建方法  *****
    NSString *str = @"這是一個字符串";
    NSLog(@"str = %@",str);
    NSString *str2 = [[NSString alloc]initWithFormat:@"this is a string"];

    // 3>可以進行一個拼接  ***
    NSString *str3 = [[NSString alloc]initWithFormat:@"%@",str];

    NSLog(@" str2 = %@",str2);
    NSLog(@" str3 = %@",str3);


    // 4》
    NSString *str4 = [NSString stringWithFormat:@"這是一字符串"];

    NSString *str5 = [NSString stringWithFormat:@"%@",str];
    NSLog(@" str4 = %@  str5 = %@",str4,str5);


    //——————————————2.字符串的比較————————————————


    // 1》
    NSString *str6 = [[NSString alloc] initWithFormat:@"a"];
    NSString *str7 = [[NSString alloc] initWithFormat:@"A"];

    NSLog(@"str6 = %p  str7 = %p ",str6,str7);

    // = 比較的是指針地址
    if (str6 == str7) {

        NSLog(@"比較的是指針地址");


    }

    // isEqualToString  比較的是內容 是否相同
    BOOL isEqualToString =  [str6 isEqualToString:str7];
    NSLog(@"比較的是內容  %d ",isEqualToString);


    // 2>

    // caseInsensitiveCompare  可以比較字符串是升序 相同 降序
    // 忽略大小寫的比較
    NSComparisonResult result =  [str6 caseInsensitiveCompare:str7];
    /*
     typedef NS_ENUM(NSInteger, NSComparisonResult) {

        NSOrderedAscending = -1L,//升序
        NSOrderedSame,           //相同
        NSOrderedDescending      //降序

     };
     */

    if (result == NSOrderedAscending ) {

        NSLog(@"升序");
    } else if (result == NSOrderedSame) {
        NSLog(@"相同");

    } else {

        NSLog(@"降序");
    }

    // ________________3字符串的長度_____________
    NSString *str8 =  @"abc";

    // length
    NSUInteger length = [str8 length];
    NSLog(@"length = %ld",length);

    //—————————————————4.字符串的大小寫的轉換—————————————————
    NSString *str9 = @"hello World";

    //capitalizedString 首字母大寫
    NSString *str10 = [str9 capitalizedString];
    NSLog(@"str10 = %@",str10);

    //uppercaseString 把所有的字母變成大寫
    NSString *str11 =  [str9 uppercaseString];
    NSLog(@"str11 = %@",str11);

    //lowercaseString 把所有的字母變成xiao寫
    NSString *str12 = [str9 lowercaseString];
    NSLog(@"str12 = %@",str12);

    //————————————————5.轉換成基本的數據類型——————————————————
    // ****
    NSString *str13 = @"10";
    NSString *str14 = @"3";

    //字符串是不能計算
//    str13 - str1;
    int a =  [str13 intValue];
    int b =  [str14 intValue];
    NSLog(@"a - b = %d ",a - b);

    NSString *str15 = @"3.0";
    int c = [str15 floatValue];

//    NSString *str16 = @"3aa";
//    int d = [str16 intValue];
//    NSLog(@"d = %d ",d);

    //—————————————————6.字符串的截取———————————————————

    //*****
    NSString *str16 = @"abc def hij";

    NSArray *array1 =  [str16 componentsSeparatedByString:@" "];
    NSLog(@"array1 = %@",array1);


    //characterAtIndex  根據制定的下標訪問裏面的元素
    char char1 = [str16 characterAtIndex:0];
    NSLog(@"char1 = %c ",char1);


    //substringFromIndex  根據下標截取這個下標以後的字符串 包括這個下標所對應的字符
    NSString *str17 = [str16 substringFromIndex:2];
    NSLog(@"str17 = %@",str17);

    //substringToIndex  從開頭截取到對應的下標 但是不包括下標所對應的字符
    NSString *str18 = [str16 substringToIndex:2];
    NSLog(@"str18 = %@",str18);

    //截取到指定的範圍
    /*

     typedef struct _NSRange {
     NSUInteger location;
     NSUInteger length;

     } NSRange;


     */
    NSRange rang = NSMakeRange(0, 2);
    //NSString *str16 = @"abc def hij";
    NSString *str19 =  [str16 substringWithRange:rang];
    NSLog(@"str19 = %@",str19);

    //——————————————7.字符串的拼接————————————————
    //****

    NSString *str20 = @"hello";
    NSString *str21 = @"world";

    //stringByAppendingFormat 拼接
    NSString *str22 =  [str20 stringByAppendingFormat:@" %@",str21];
    NSLog(@"str22 = %@",str22);


    NSString *str23 = [str20 stringByAppendingString:str21];

    NSString *str24 = [NSString stringWithFormat:@"%@ %@",str21,str22];

    NSLog(@"str23 = %@ str24 = %@",str23,str24);



    // —————————————8.查找—————————————————
    NSString *str25 = @"[email protected]";
    NSString *str26 = @"qq.com";

    NSRange rang2 =  [str25 rangeOfString:str26];
    if (rang2.location != NSNotFound) {

        // 沒有找到位置

        NSLog(@"找到了");
        NSLog(@"位置 %ld  長度 %ld ",rang2.location,rang2.length);



    }


    // 字符串的替換
    NSString *str27 = [str25 stringByReplacingOccurrencesOfString:@"qq.com" withString:@"163.com"];

    NSLog(@"str27 = %@",str27);

再給出一些更加詳細的說明:

1.創建NSString字符串
NSString 與 char* 最大的區別就是 NSString是一個objective對象,而char* 是一個字節數組。@+” 字符串 ” 這個符號爲objective-c NSString 字符串常量的標準用法,char* 創建的時候 無需添加@

- (void)viewDidLoad
{
    [super viewDidLoad];

    //經典的字符串賦值
    NSString *str0 = @"my name is justcoding !";

    //字符串格式化合並分別包括
    //NSString*類型 int類型 char*類型 
    NSString *str1 = [NSString stringWithFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];

    //字符串賦值 參數中只可以寫一個字符串 和第一種很像
    NSString *str2 = [NSString stringWithString:@"我是字符串"];

    //字符串轉換爲utf-8格式 參數爲char*類型
    NSString *str3 = [NSString stringWithUTF8String:"字符串轉換utf-8格式"];


    //字符串合併
    int i  = 100;
    char*c = "xuanyusong";
    NSString *temp = @"我是臨時字符串";

    //在字符串temp的基礎繼續添加 int i 與 char* c 組成一個新的字符串
    NSString *str4 = [temp stringByAppendingFormat:@"整型: %d 字符型 :%s",i,c];

    //在字符串temp的基礎繼續添加temp 並組成一個新的字符串
    NSString *str5 = [temp stringByAppendingString:temp]; 

    //字符串輸出
    NSLog(@"str0 = %@", str0);
    NSLog(@"str1 = %@", str1);
    NSLog(@"str2 = %@", str2);
    NSLog(@"str3 = %@", str3);
    NSLog(@"str4 = %@", str4);
    NSLog(@"str5 = %@", str5);

}

2.字符串的遍歷
每一個字符串其實是由若干個char字符組成,字符串的遍歷實際上就是將字符串中的每一個字符提取出來。

- (void)viewDidLoad
{
    [super viewDidLoad];

    //經典的字符串賦值
    NSString *str = @"YUSONGMOMO";

    //字符串的長度
    int count = [str length];

    NSLog(@"字符串的長度是%d",count);

    //遍歷字符串中的每一個字符
    for(int i =0; i < count; i++)
    {
        char c = [str characterAtIndex:i];
        NSLog(@"字符串第 %d 位爲 %c",i,c);
    }

}

3.字符串的比較

isEqualToString 比較字符串是否完全相等,大小寫不一樣也無法完全匹配。
hasPrefixe 匹配字符串頭
haSuffix 匹配字符串的尾巴

- (void)viewDidLoad
{
    [super viewDidLoad];


    NSString *str0 = @"justcoding";
    NSString *str1 = @"justcoding";


    //字符串完全相等比較
    if([str0 isEqualToString:str1])
    {
        NSLog(@"字符串完全相等");
    }

    //字符串以開頭比較
    if([str0 hasPrefix:@"just"])
    {
        NSLog(@"字符串str0以just開頭");
    }

    //字符串以結尾比較
    if([str1 hasSuffix:@"coding"])
    {
        NSLog(@"str1字符串以coding結尾");
    }
}

//isEqualToString方法    
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 isEqualToString:astring02];
NSLog(@"result:%d",result);

//compare方法(comparer返回的三種值)    
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";    
BOOL result = [astring01 compare:astring02] = = NSOrderedSame;    
NSLog(@"result:%d",result);    
//NSOrderedSame 判斷兩者內容是否相同

NSString *astring01 = @"This is a String!";
NSString *astring02 = @"this is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;    
NSLog(@"result:%d",result);
//NSOrderedAscending 判斷兩對象值的大小(按字母順序進行比較,astring02大於astring01爲真)

NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;    
NSLog(@"result:%d",result);    
//NSOrderedDescending 判斷兩對象值的大小(按字母順序進行比較,astring02小於astring01爲真)

//不考慮大 小寫比較字符串1
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;    
NSLog(@"result:%d",result);    
//NSOrderedDescending判斷兩對象值的大小(按字母順序進行比較,astring02小於astring01爲 真)
//不考慮大小寫比較字符串2
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02 options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;    
NSLog(@"result:%d",result);    
//NSCaseInsensitiveSearch:不區分大小寫比較 NSLiteralSearch:進行完全比較,區分大小寫 NSNumericSearch:比較字符串的字符個數,而不是字符值。

判斷的方法可以利用 NSString 類別中 caseInsensitiveCompare: 所回傳 -1、0 或是 1 的數值,判定兩個字串之間得排序關係,其程式瑪如下。

NSString *string = @"0";
 NSComparisonResult result = [string caseInsensitiveCompare:@"A"];

 switch (result) {
 case NSOrderedAscending:
 NSLog(@"升冪");
 break;

 case NSOrderedSame:
 NSLog(@"忽略大小寫相同的字串");
 break;

 case NSOrderedDescending:
 NSLog(@"降冪");
 break;

 default:
 NSLog(@"無法判定");
 break;
 }

4、 文件字符追加

NSString *str1=[str stringByAppendingString:@"abc"];

5、字符串的截取和大小寫

//改變字符串的大小寫
NSString *string1 = @"A String";
NSString *string2 = @"String";
NSLog(@"string1:%@",[string1 uppercaseString]);//大寫
NSLog(@"string2:%@",[string2 lowercaseString]);//小寫
NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小

6、搜索字符串與替換字符串

- (void)viewDidLoad
{
    [super viewDidLoad];


    NSString *str0 = @"中文my name is xuanyusong";
    NSString *temp = @"is";
    NSRange rang = [str0 rangeOfString:temp];

    NSLog(@"搜索的字符串在str0中起始點的index 爲 %d", rang.location);
    NSLog(@"搜索的字符串在str0中結束點的index 爲 %d", rang.location + rang.length);

    //將搜索中的字符串替換成爲一個新的字符串
    NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"哇咔咔卡卡咔"]; 
    NSLog(@"替換後字符串爲%@", str);


    //將字符串中" " 全部替換成 *
    str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"]; 
    NSLog(@"替換後字符串爲%@", str);


}

拓展:使用下面這個方法整體替換字符串還可以設置替換的區域。

stringByReplacingOccurrencesOfString:(NSString *)withString:(NSString *) options:(NSStringCompareOptions) range:(NSRange)

7、字符串與C中char得一些轉換方法

        char *chr="hello";
        NSString *str=[[NSString alloc]initWithCString:chr encoding:NSUTF8StringEncoding];
        NSString *str1=[[NSString alloc]initWithUTF8String:chr];
        NSString *str2=[NSString stringWithUTF8String:chr];

8、判斷前後綴

        [str hasPrefix:@"www"];
        [str hasSuffix:@".com"];
        返回值爲BOOL類型

關於NSMutalbeString一些方法

1、字符串尾部添加

使用alloc在內存中創建字符串對象後邊可以動態的操作這個字符串,修改與添加等。

appendstring 方法:向字符串尾部添加一個字符串。

appendFormat方法:向字符串尾部添加多個類型的字符串,可以添加任意數量與類型的字符串。

- (void)viewDidLoad
{
    [super viewDidLoad];


    NSMutableString * str = [[NSMutableString alloc] init];

    //添加普通的字符串
    [str appendString:@"aaa"];

    //添加字符串 整型 字符型
    [str appendFormat:@"我的名字:%@ 我的年齡:%d 我的郵箱:%s",@"justcoding", 25,"[email protected]"];

    NSLog(@"str = %@",str);

}

2、字符串中刪除元素

stringWithString 方法:用於創建字符串初始化賦值(將不可變轉爲可變)

rangeOfString方法:傳入字符串返回一個在該字符串中的範圍 也可以寫 NSMakeRange(0, 3) 意思是範圍在字符串0位到第3位

deleteCharactersInRange:刪除字符串 參數爲Range 就是刪除的範圍。

- (void)viewDidLoad
{
    [super viewDidLoad];

    //創建字符串
    NSMutableString *str = [NSMutableString stringWithString:@"justcoding is best!"];

    //刪除字符串中含"justcoding"的字符
    [str deleteCharactersInRange: [str rangeOfString: @"justcoding"]];    

    NSLog(@"str = %@",str);

}

3、 字符串插入

stringWithString 方法:用於創建字符串初始化賦值

insertString方法:第一個參數 插入的字符串對象, 第二個參數 插入的位置。

- (void)viewDidLoad
{
    [super viewDidLoad];

    //創建字符串
    NSMutableString *str = [NSMutableString stringWithString:@"justcoding is"];

    //在str第10位插入字符串
    [str insertString:@"best man" atIndex:10];

    NSLog(@"str = %@",str);

}

4、 字符串拷貝

- (void)viewDidLoad
{
    [super viewDidLoad];

    //創建字符串
    NSMutableString *str1 = [NSMutableString stringWithString: @"字符串1"];
    NSMutableString *str2;

    //字符串賦值
    str2 = str1;

    [str2 appendString: @" 和字符串2"];

    NSLog (@"str1 = %@", str1);

    NSLog (@"str2 = %@", str2);    
}

5、字符串與指定類型轉換
如果轉換的參數非法的話不會拋出異常,好比用中文去轉整型。不會報錯 但是轉換結果爲 0 ,默認值。

- (void)viewDidLoad
{
    [super viewDidLoad];

    //字符串轉整型
    NSString *str0 = @"1121";
    //NSString *str0 = @"中國";

    //把字符串強轉成整型
    int i = [str0 intValue];

    NSLog (@"轉換後:%i", i); 

    //字符串轉interger
      NSString *str1 = @"1985";
    // NSString *str1 = @"中國";

    //把字符串強轉成interger
    NSInteger ii = [str1 integerValue];

    NSLog (@"轉換後:%i", ii); 



    //字符串轉double
    NSString *str2 = @"3.145926";
    //NSString *str2 = @"中國";

    //把字符串強轉成double
    double d = [str2 doubleValue];

    NSLog (@"轉換後:%f", d); 

    //字符串轉float
    NSString *str3 = @"3.145926";
     //NSString *str3 = @"中國";
    //把字符串強轉成float
    double f = [str3 floatValue];

    NSLog (@"轉換後:%f", f); 

}
  • NSString 常用方法總結
    +(id)stringWithContentsOfFile:path encoding:enc err 創建一個新字符串並將其設置爲 path 指定文件的內容,使用字符編碼 enc,在err 上返回錯誤
    +(id)stringWithContentsOfURL:url encoding:enc err 創建一個新字符串並將其設置爲 url 所指向的內容,使用字符編碼 enc,在err 上返回錯誤
    +(id)string 創建一個新的空字符串
    +(id)stringWithString:nsstring 創建一個新字符串,將其內容設置爲 nsstring 內容
    -(id)initWithString:nsstring 將字符串內容設置爲 nsstring 內容
    -(id)initWithContentsOfFile:path encoding:enc error:err 將字符串設置爲 path 指定文件的內容,使用字符編碼 enc,在err 上返回錯誤
    -(id)initWithContentsOfURL:url encoding:enc error:err 將字符串設置爲 url 所指向的內容,使用字符編碼 enc,在err 上返回錯誤
    -(UNSigned int)length 返回字符串中字符數目
    -(unichar)characterAtindex:i 返回索引i 所在UniCode 字符
    -(NSString*)substringFromIndex:i 返回從索引 i 開始到結尾的子字符串
    -(NSString*)substringWithRange:range 根據指定範圍返回子字符串
    -(NSString*)substringToIndex:i 返回從字符串開始到 索引 i 的子字符串
    -(NSComparator*)caseInsensitiveCompare:nsstring 比較兩個字符串大小,忽略大小寫
    -(NSComparator*)compare:nsstring 比較兩個字符串大小
    -(BOOL)hasPrefix:nsstring 測試字符串是否以 nsstring 開始
    -(BOOL)hasSuffix:nsstring 測試字符串是否以 nsstring 結尾
    -(BOOL)isEqualToString:nsstring 測試兩個字符串是否相等
    -(NSString*)capitalizedString 返回字符串,串中的每個單詞的首字母大寫,其餘字母小寫
    -(NSString*)lowercaseString 返回轉換爲小寫的字符串
    -(NSString*)uppercaseString 返回轉換爲大寫的字符串
    -(const char*)UTF8String 返回UTF8編碼格式的字符串
    -(double)doubleValue 返回轉換爲double 類型的字符串
    -(float)floatValue 返回轉換爲 float 類型的字符串
    -(NSInteger)integerValue 返回轉換爲 NSInteger 類型的新字符串
    -(int)intvalue 返回轉換爲 int 的字符串

  • NSMutableString 可修改字符串常用方法
    +(id)stringWithCapacity:size 創建一個字符串,容量爲size大小
    -(id)initWithCapacity:size 初始化一個字符串,容量爲size
    -(void)setString:nsstring 將字符串設置爲 nsstring
    -(void)appendString:nsstring 在字符串末尾追加字符串 nsstring
    -(void)deleteCharatersInRange:range 刪除指定range 中的字符
    -(void)insertString:nsstring atIndex:i 以索引 i 爲起始位置插入 nsstring
    -(void)replaceCharatersInRange;range withString:nsstring 使用 nsstring 替換 range 指定的字符
    -(void)replaceOccurrencesOfString:nsstring withString:nsstring2 options:opts range:range 根據選項 opts ,使用指定 range 中的nsstring2 替換所有的 nsstring

    今日部分練習:

//
//  main.m
//  OC15-8.4
//
//  Created by 嚴誠 on 15/8/4.
//  Copyright (c) 2015年 嚴誠. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
//        // insert code here...
//        NSLog(@"Hello, World!");
//        int a = 10;
//        //NSString *str1=[[NSString alloc]initWithFormat:@"aaa"];
//        NSString *str1 = [[NSString alloc]initWithFormat:@"%d",a];
//        NSString *str2 = [NSString stringWithFormat:@"aaa"];
//        NSString *str3 = [NSString stringWithFormat:@"%@%@",str1,str2];
//        NSLog(@"%@",str3);
//        NSLog(@"%p",str2);
//        BOOL re1 = [str3 isEqualToString:str2];
//        NSLog(@"bool%d",re1);
//        NSComparisonResult nr = [str1 caseInsensitiveCompare:str2];
//        if (nr == -1) {
//            NSLog(@"-1");
//        }
//        NSLog(@"nr = %ld",nr);
//        NSString *str4=[str2 uppercaseString];
//        NSLog(@"%@",str4);
//        NSString *str5=[str4 lowercaseString];
//        NSLog(@"%@",str5);
//        NSString *str6=[str5 capitalizedString];
//        NSLog(@"%@",str6);
//        NSString *str7 = [NSString stringWithFormat:@"hello world!"];
//        NSLog(@"%@",[str7 uppercaseString]);
//        NSLog(@"%@",[str7 lowercaseString]);
//        NSLog(@"%@",[str7 capitalizedString]);
//        NSRange range1 = NSMakeRange(0, 2);
//        //NSRange range1={0,3};
//        NSLog(@"%@",[str7 substringWithRange:range1]);

        /**
         *  1.編寫一個程序,使用NSString和NSMutableString
         實例化一些NSString類的對象,然後比較其是否相等,大小。
         實例化一個NSMutableString的對象,然後將之前的NSString對象加入其中,然後再刪除幾個,要求使用NSRange結構體
         */
        NSString *str8=[NSString stringWithFormat:@"abcde"];
        NSString *str9=[NSString stringWithFormat:@"abcde"];
        NSString *str10=[NSString stringWithFormat:@"AbCde"];
        NSString *str11=[NSString stringWithFormat:@"abcdefg"];
        NSComparisonResult result;
        result=[str8 compare:str9];
        NSLog(@"%ld",result);
        result=[str10 compare:str8];
        NSLog(@"%ld",result);
        result=[str8 caseInsensitiveCompare:str11];
        NSLog(@"%ld",result);
        NSMutableString *mstr1=[NSMutableString stringWithCapacity:0];//必須定義大小
        [mstr1 appendString:@"hello"];
        NSLog(@"%@",mstr1);
        [mstr1 appendString:str10];
        NSLog(@"%@",mstr1);
        NSRange range2={2,1};
        [mstr1 deleteCharactersInRange:range2];
        NSLog(@"%@",mstr1);
        [mstr1 insertString:@"aaaa" atIndex:5];
        NSLog(@"%@",mstr1);
        [mstr1 replaceCharactersInRange:range2 withString:@"AAA"];
        NSLog(@"%@",mstr1);

        /**
         *  2. 編寫程序,將”Hello World and Sunshine.”字符串中的”World”替換爲”NanLiGong”,並將替換前和替換後的字符串輸出
         本題要求做兩次,使用NSString兩種替換方法完成
         */
        NSString *str12=[NSString stringWithFormat:@"Hello World and Sunshine."];
        NSString *str13=[NSString stringWithFormat:@"NanLiGong"];
        NSLog(@"%@",str12);
        NSRange world=[str12 rangeOfString:@"World"];
        NSString *replace=[str12 stringByReplacingCharactersInRange:world withString:str13];
        NSLog(@"%@",replace);
        NSString *replace2=[str12 stringByReplacingOccurrencesOfString:@"World" withString:str13];
        NSLog(@"%@",replace2);

        /**
         *   3. 現有如下定義的字符串: NSMutableString * str=@“iphoneAndroid”, 能不能對該字符串進行修改,如果能,請輸出刪除Android後的新字符串。

         */
        //NSMutableString * str=@"iphoneAndroid";
        //不能修改,但是用下面的方法可以轉換
        NSString * str=@"iphoneAndroid";
        NSMutableString *str1=[NSMutableString stringWithString:@"iphoneAndroid"];
        NSRange android=[str rangeOfString:@"Android"];
        [str1 deleteCharactersInRange:android];
        NSLog(@"%@",str1);


        /**
         *  求字符串“158”和“39”按十進制數值做差後的結果以字符串形式輸出
         */
        NSString *n1=@"158";
        NSString *n2=@"39";
        int n11=[n1 intValue];
        int n22=[n2 intValue];
        int result1=n11-n22;
        NSString *res=[NSString stringWithFormat:@"%d",result1];
        NSLog(@"%@",res);
        /**
         *  4.比較系統的版本號大小 例如  @”5.0.1” , @”5.1.3”
         */
        NSString *v1=[NSString stringWithFormat:@"5.0.1"];
        NSString *v2=[NSString stringWithFormat:@"5.1.3"];
        NSString *v3=[NSString stringWithFormat:@"5.1.0"];
        NSComparisonResult rs=[v1 compare:v2 options:NSNumericSearch];
        //NSNumericSearch = 64,     /* Added in 10.2; Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt; only applies to compare methods, not find */
        NSLog(@"%ld",rs);
        rs=[v2 compare:v3 options:NSNumericSearch];
        NSLog(@"%ld",rs);

        /**
         *  5. 判斷郵箱格式是否正確  要求:儘量做的細緻。複合實際需求。
         */
        //NSString *mail=@"[email protected]";
        while (1) {
            char mail1[50];
            NSLog(@"輸入一個郵箱地址");
            scanf("%s",mail1);
            NSString *mail=[NSString stringWithUTF8String:mail1];
            NSRange range=[mail rangeOfString:@"@"];
            //NSLog(@"%@",NSStringFromRange(range));
            NSRange range1=[mail rangeOfString:@"." options:NSBackwardsSearch];
            //NSLog(@"%@",NSStringFromRange(range1));
            NSRange range3=[mail rangeOfString:@"@"];
            if (range.location<1||range.location>range1.location||range1.location>=([mail length]-1)||(range1.location-range.location)<1||([mail length]-range1.location)<1||range.location!=range3.location) {
            NSLog(@"輸入的郵箱不正確");
            }
        }


    }
    return 0;

}

-

-

-

-15.8.4
-15.8.11

發佈了38 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章