Object-c基础系列-NSString常用方法集合

/*

 

 1、将字符串内容写入到磁盘上的某1个文件之中.

    - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

 

    参数1:将字符串泥工写入到哪1个文件之中,写上文件的路径.

    参数2YES,先将内容写入到1个临时文件,如果成功再将这个文件搬到指定的目录,安全,效率较低

          NO,直接将内容写到指定的文件,不安全,效率高.

        

            推荐使用NO

 

    参数3:指定写入的时候使用的编码,一般情况下这里写NSUTF8StringEncoding,使用UTF-8编码.

 

    参数4:二级指针,要传递1NSError指针的地址.

 

        如果写入成功,这个指针的值就是nil.

        如果写入失败,这个指针就会指向1个错误对象,这个对象描述了发生错误的信息.

        这个对象的localizedDescription方法可以得到发生错误的简要信息.

 

        所以我们要判断是否写入成功,也可以判断这个指针的值是否为nil.

 

        如果不想知道发生错误的原因,第四个参数给一个nil就可以了.

 

    返回值是BOOL类型的,代表是否写入成功.

 

 2、从磁盘上的文件中读取文件中的内容.

 

    + (nullable instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;

 

    1个参数:文件的路径

    2个参数:使用的编码:NSUTF8StringEncoding

    3个参数:错误对象

 

 3、使用NSURL来读取字符串数据

    

    1)读写字符串数据的时候,路径可以是本地磁盘路径,也可以是1个网址,还可以是1ftp文件的地址。

        我们用1NSURL对象来描述1个地址,本地路径的网址的 ftp文件的

        我们就可以通过这个NSURL对象存储的地址信息来读写字符串.

 

    2)不同的URL的写法

        a)本地磁盘文件:file://绝对路径

        b)网址:http://网址或者 https://网址

        cftp ftp://文件地址

 

    3)将不同类型的地址封装在NSURL对象之中.

         NSURL *url1 = [NSURL URLWithString:@"http://www.itsoku.com"];

         NSURL *url2 = [NSURL URLWithString:@"ftp://server.itsoku.com/a.txt"];

         NSURL *url3 = [NSURL URLWithString:@"file:///Users/likun/abc.txt"];

 

    4)字符串就提供了对应的方法去读写NSURL对象中封装的资源路径

 

        从指定资源路径读取文本内容

        + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

 

        将字符串内容写入到资源路径中

        - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

 

        如果要想忘了或者ftp写内容需要有权限.

 

 4、字符串比较

    - (NSComparisonResult)compare:(NSString *)string;

 

 5、字符串比较:忽略大小写的比较

    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;

 

 6、判断字符串内容是否相等

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

 

 7、字符串判断是否以指定的字符串开头

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

 

 8、判断字符串是否以指定的字符串结尾

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

 

 9、在字符串中搜索子串,从前往后搜

 

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

 

    返回值是1NSRange类型的结构体变量.

     typedef struct _NSRange {

         NSUInteger location; //代表子串在主串出现的下标

         NSUInteger length;//代表子串在主串中匹配的长度

     } NSRange;

 

     如果没找到:location的值为unsigned long的最大值,也就是NSIntegerMaxlength0也表示没有找到

 

 10、在主串中搜索子串,从后往前

    

     NSRange range = [str rangeOfString:@"love" options:NSBackwardsSearch];

     if(range.length==0){

         NSLog(@"没找到");

     }else{

         NSLog(@"%lu,%lu",range.location,range.length);

     }

 

 11NSRange结构体.

 

    1)是Foundation框架中定义的1个结构体.

 

         typedef struct _NSRange {

             NSUInteger location;

             NSUInteger length;

         } NSRange;

 

        NSRange range;

 

        这个机构提变量一般情况下用来表示1段范围,特别用在子串在主串中的范围表示.

 

        @"hahajackhehe" @"jack"  4 4 

        NSRange range = {4,4};

 

    2)声明并初始化结构体变量的方式

        

        1)最原始的方式.

            NSRange range;

            range.location = 3;

            range.length = 4;

        

        2)第二种方式:NSRange range = {3, 7};

        3)第三种方式:NSRange range = {.location:3,.length = 7};

        

        4Foundation框架中定义了1个函数,这个函数可以快速创建一个NSRange结构体.

 

            NSRange NSMakeRange(NSUInteger loc, NSUInteger len);

            返回1个指定属性的NSRange结构体变量.

 

        5Foundation框架中定义了1个函数,可以将1NSRange结构体变量转换为NSString

 

 12、截取字符串

     - (NSString *)substringFromIndex:(NSUInteger)from;//从指定位置截取到最后

     - (NSString *)substringToIndex:(NSUInteger)to;//从第0个约束截取到指定的下标处

     - (NSString *)substringWithRange:(NSRange)range;//从字符串中截取1个范围的字符串

 

 13、字符串的替换

 

    - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0);

    将字符串中第1个参数替换为第2个参数,友情提示:原来的指针指向的字符串的内容是不会变的,会全部替换.

    新串是以方法的返回值返回的.

 

 14、获取字符串中每1个下标的字符.

 

    - (unichar)characterAtIndex:(NSUInteger)index;

    传入1NSUInteger的参数,救护返回这个下标处的字符,返回值是unichar类型的,这个类型的字符串支持中文,输出unichar变量中的字符串使用格式控制符%C看清楚是大写的C

 

 15、字符串数据转换为其他类型,使用频率很高.

     @property (readonly) double doubleValue;

     @property (readonly) float floatValue;

     @property (readonly) int intValue;

     @property (readonly) NSInteger integerValue NS_AVAILABLE(10_5, 2_0);

     @property (readonly) long long longLongValue NS_AVAILABLE(10_5, 2_0);

     @property (readonly) BOOL boolValue NS_AVAILABLE(10_5, 2_0);

 

    转换注意:从头开始转换,能转换多少就是多少,遇到不能转换的时候就停止转换.

 

 16、字符串的其他成员

 

    1)得到字符串的长度,调用字符串对象的leng方法就可以.

        @property(readonly) NSUInteger length;

 

    2)去掉字符串的前后空格

        str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

 

 17、字符串和文件相关方法

    1)判断当前字符串是否是绝对路径

        @property (getter=isAbsolutePath, readonly) BOOL absolutePath

 

    2)获取文件路径中的最后一个目录,本质就是获取路径中最后一个/后面的内容

 

        @property (readonly, copy) NSString *lastPathComponent;

 

    3)删除文件路径中最后一个目录

        @property (readonly, copy) NSString *stringByDeletingLastPathComponent;

 

    4)给文件路径中添加一个目录

        - (NSString *)stringByAppendingPathComponent:(NSString *)str;

        本质就是在字符串末尾加上一个/和指定的内容

        注意:如果路径后面一句有了/,那么就不会添加了.

            如果路径后面有多个/,那么会自动删除多余的/,只会保留一个

 

    5)获取文件的扩展名

        @property (readonly, copy) NSString *pathExtension;

 

    6)删除文件路径的扩展名

        @property (readonly, copy) NSString *stringByDeletingPathExtension;

 

    7)为文件路劲添加扩展名

        - (nullable NSString *)stringByAppendingPathExtension:(NSString *)str;

 

 */


#import

#define BOOLDes(val) val==YES?@"":@""

/**

 *  写入本地文件

 */

void test1();

/**

 *  读取本地文件

 */

void test2();

/**

 *  通过NSURL读取本地文件

 */

void test3();


/**

 *  通过NSURL读取网页内容

 */

void test4();


/**

 *  字符串的比较

 */

void test5();


/**

 *  字符串比较:忽略大小写的比较

 */

void test6();


/**

 *  判断字符串是否以某个字符串开头,或者是否以某个字符串结尾

 */

void test7();


/**

 *  在字符串中搜索子串

 */

void test8();


/**

 *  字符串的截取

 */

void test9();


/**

 *  字符串的替换

 */

void test10();


/**

 *  获取字符串中指定下标的字符

 */

void test11();


/**

 *  字符串数据转换为其他类型

 */

void test12();


/**

 *  去掉字符串的前后空格

 */

void test13();


/**

 *  和文件相关方法

 */

void test14();


int main(int argc,constchar * argv[]) {

    test14();

    return0;

}


/**

 *  和文件相关方法

 */

void test14()

{

    

    /**

     *  判断当前文件路径是否是绝对路径

     */

    NSString *str1 =@"/user";

    if(str1.isAbsolutePath){

        NSLog(@"%@是绝对路径",str1);

    }else{

        NSLog(@"%@不是绝对路径",str1);

    }

    

    /**

     *  获取文件路劲中最后一个目录

     */

    NSString *str2 =@"/user/aaa";

    NSLog(@"%@最后一个目录是%@",str2,str2.lastPathComponent);

    

    /**

     *  删除文件路径中最后一个目录

     */

    NSString *str3 =@"/user/aaa";

    NSLog(@"%@",str3.stringByDeletingLastPathComponent);

    

    /**

     *  给文件路径中添加一个目录

     */

    NSString *str4 =@"/user/aaa";

    NSLog(@"%@",[str4stringByAppendingPathComponent:@"itsoku"]);

    

    /**

     *  获取文件的扩展名

     */

    NSString *str5 =@"/user/aaa.txt";

    NSLog(@"%@的扩展名%@",str5,str4.pathExtension);

    

    /**

     *  删除文件的扩展名

     */

    NSString *str6 =@"/user/aaa.txt";

    NSLog(@"%@删除扩展名之后内容为%@",str6,str6.stringByDeletingPathExtension);

    

    /**

     *  给文件路劲添加一个扩展名

     */

    NSString *str7 =@"/user/aaa.txt";

    NSLog(@"%@添加扩展名之后内容为%@",str7,[str7stringByAppendingPathExtension:@"doc"]);

}


/**

 *  去掉字符串的前后空格

 */

void test13()

{

    NSString *str =@"    jack      ";

    NSLog(@"%@",str);

    str = [str stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]];

    NSLog(@"%@",str);

}


/**

 *  字符串数据转换为其他类型

 */

void test12()

{

    NSString *str =@"12";

    int num = str.intValue;

    NSLog(@"%d",num);

}


/**

 *  获取字符串中指定下标的字符

 */

void test11()

{

    NSString *str =@"jacklove肉丝";

    unichar ch = [strcharacterAtIndex:8];

    NSLog(@"%C",ch);

}


/**

 *  字符串的替换

 */

void test10()

{

    NSString *str =@"我爱北京,北京天安门";

    str = [str stringByReplacingOccurrencesOfString:@"北京"withString:@"广州小蛮腰"];

    NSLog(@"%@",str);

    

}


/**

 *  字符串的截取

 */

void test9()

{

    NSString *str =@"i love itsoku";

    NSLog(@"%@",[strsubstringFromIndex:2]);

    NSLog(@"%@",[strsubstringToIndex:3]);

    NSLog(@"%@",[strsubstringWithRange:NSMakeRange(2,4)]);

}


/**

 *  在字符串中搜索子串

 */

void test8()

{

    NSString *str =@"i love itsoku love you!";

    //从前往后搜

    NSRange range = [strrangeOfString:@"love"];

    if(range.length==0){

        NSLog(@"没找到");

    }else{

        NSLog(@"%lu,%lu",range.location,range.length);

    }

    //从后往前搜

    range = [str rangeOfString:@"love"options:NSBackwardsSearch];

    if(range.length==0){

        NSLog(@"没找到");

    }else{

        NSLog(@"%lu,%lu",range.location,range.length);

        NSLog(@"%@",NSStringFromRange(range));

    }

}


/**

 *  判断字符串是否以某个字符串开头,或者是否以某个字符串结尾

 */

void test7()

{

    NSString *str =@"http://www.itsoku.com";

    BOOL res = [strhasPrefix:@"http"];

    NSLog(@"%@",BOOLDes(res));

    

    res = [str hasSuffix:@"1.com"];

    NSLog(@"%@",BOOLDes(res));

}


/**

 *  字符串比较:忽略大小写的比较

 */

void test6()

{

    NSString *str1 =@"rose";

    NSString *str2 =@"ROSE";

    int res = [str1compare:str2options:NSCaseInsensitiveSearch];

    NSLog(@"%d",res);

}


/**

 *  字符串的比较

 */

void test5()

{

    NSString *str1 =@"jack";

    NSString *str2 =@"tom";

    NSComparisonResult res = [str1compare:str2];

    switch (res) {

        caseNSOrderedAscending:

            //说明str1str2

            NSLog(@"");

            break;

        caseNSOrderedSame:

            //说明str1str2相等

            NSLog(@"相等");

            break;

        caseNSOrderedDescending:

            //说明str1str2

            NSLog(@"");

            break;

        default:

            break;

    }

}


/**

 *  通过NSURL读取网页内容

 */

void test4()

{

    NSURL *u1 = [NSURLURLWithString:@"http://www.itsoku.com"];

    NSError *error;

    NSString *str = [NSStringstringWithContentsOfURL:u1encoding:NSUTF8StringEncodingerror:&error];

    if(error){

        NSLog(@"读取失败,错误信息:%@",[errorlocalizedDescription]);

    }else{

        NSLog(@"%@",str);

    }

}


/**

 *  通过NSURL读取本地文件

 */

void test3()

{

    NSURL *u1 = [NSURLURLWithString:@"file:///Users/likun/abc.txt"];

    NSError *error;

    NSString *str = [NSStringstringWithContentsOfURL:u1encoding:NSUTF8StringEncodingerror:&error];

    if(error){

        NSLog(@"读取失败,错误信息:%@",[errorlocalizedDescription]);

    }else{

        NSLog(@"%@",str);

    }

}

/**

 *  读取文件内容

 */

void test2()

{

    NSError *error;

    NSString *str = [NSStringstringWithContentsOfFile:@"/Users/likun/Desktop/project/oc/9.2Foundation框架-NSString常用方法/main.m"encoding:NSUTF8StringEncodingerror:&error];

    if(error){

        NSLog(@"读取失败.");

        NSLog(@"%@",[errorlocalizedDescription]);

    }else

    {

        NSLog(@"%@",str);

    }

    

}


/**

 *  写文件

 */

void test1()

{

    NSString *str =@"http://www.itsoku.com,一个技术学习与分享平台";

    NSError *error;

    BOOL res = [strwriteToFile:@"/Users/likun/abc.txt"atomically:NOencoding:NSUTF8StringEncoding error:&error];

    

    if(res ==YES)

    {

        NSLog(@"写入成功.");

    }else{

        NSLog(@"写入失败.");

        NSLog(@"%@",error.localizedDescription);

    }

}


如果喜欢,请关注公众号,我们将最好的内容分享与你!


你可能感兴趣的:(object-c)