博客> 自己整理下常用的NSString的一些比较常用的方法和应用场景
自己整理下常用的NSString的一些比较常用的方法和应用场景
2017-09-22 22:47 评论:0 阅读:198 小青年噢噢
ios NSString NSString用法 substringFromIndex stringByReplacing NSStringFrom
 `list text here` 以前没写过博客不能发现自己还有这么多系统的方法没有用过,现在重新整理并再次深入了解下NSString,没有用过的方法后面再查资料学习下,看看那些方法用在实际项目中会有哪些化学反应。哈哈

下面这些代码是今天下午没事的时候大致整理的下,

// // ViewController.m // ZQNSStringMethod // // Created by mac on 17/1/3. // Copyright © 2017年 com.zhiqing266@163.com. All rights reserved. //

import "ViewController.h"

static NSString demoString = @"aaa字符串的常用用法aaa"; static NSString demoString2 = @"a,b,c,d"; static NSString demoString3 = @"aaa"; static NSString demoString4 = @"bbb";

@interface ViewController ()

@end

@implementation ViewController

  • (void)viewDidLoad { [super viewDidLoad];

    [self changeString];

}

/**

  • 字符串截取的方法
  • 应用场景:在某一字符串中获取自己特定想要的字符串 */ -(void)subStringMethod{

    { // characterAtIndex 返回索引(某个值,比如i)所在的Unicode字符 char aa = [demoString characterAtIndex:2]; NSLog(@"characterAtIndex >>>>>> %c",aa); // 输出 ---> a }

    { // substringFromIndex 截取字符串下标之后的字符串,包括下标

    NSString * bb = [demoString substringFromIndex:3];
    NSLog(@"substringFromIndex >>>>>>  %@",bb);  // 输出 ---> 字符串的常用用法aaa

    }

    { // substringToIndex 截取字符串下标之前的字符串,不包括下标

    NSString * bb = [demoString substringToIndex:3];
    NSLog(@"substringToIndex >>>>>>  %@",bb);  // 输出 ---> aaa

    }

    { // substringWithRange NSMakeRange(NSUInteger loc, NSUInteger len) 截取字符串下标为 loc ,长度为 len的字符串 包括下标

    NSString * bb = [demoString substringWithRange:NSMakeRange(0, 4)];
    NSLog(@"substringWithRange >>>>>>  %@",bb);  // 输出 ---> aaa字

    }

    { // getCharacters:(unichar *)buffer range:(NSRange)range //首个参数应该指向一个足够大的数组,以便容下请求范围内的那些字符串 unichar aa[5]; [demoString getCharacters:aa range:NSMakeRange(0, 5)]; for (int i = 0; i < 5>>>>>> %c",aa[i]); // 依次输出 ---> aaaW& } } }

/**

  • 字符串比较
  • 应用场景:比较日期的大小

    */

    • (void)compareMehtod{

    { // - (NSComparisonResult)compare:(NSString )string; 此方法常用来比较两个字符的大小 //NSComparisonResult // NSOrderedAscending = -1, // < 升序 // NSOrderedSame, // = 等于 // NSOrderedDescending // > 降序 // 还有些方法可以根据参数的意思看下怎么使用 / NSStringCompareOptions NSCaseInsensitiveSearch = 1,//不区分大小写比较

     NSLiteralSearch = 2,//区分大小写比较
    
     NSBackwardsSearch = 4,//从字符串末尾开始搜索
    
     NSAnchoredSearch = 8,//搜索限制范围的字符串
    
     NSNumbericSearch = 64//按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7 xss=removed xss=removed xss=removed xss=removed>>>>>>  %ld",(long)bb);  // bb 为NSOrderedDescending  输出 ---&gt; 1

    }

}

/**

  • 其他类型与字符串互转
  • 应用场景:调试,runtime,后台交互

    */

-(void)typeConvert{

NSRange range = NSMakeRange(1, 3);
// 结构体转换成字符串 ---&gt; 还有很多此处省略
{
    NSString * rangeString = NSStringFromRange(range);
    // NSRangeFromString()
    NSString * cgsizeString = NSStringFromCGSize(CGSizeMake(20.0, 30.0));
    //CGSizeFromString()
    NSLog(@"NSStringFrom ---- %@,%@",rangeString,cgsizeString);
    // 输出   {1, 3},{20, 30}
}

// value 转换成字符串
{
    NSValue *value = [NSValue valueWithRange:range];
    NSString * valueString = value.description;
    NSLog(@"NSStringFrom ---- %@",valueString); // 输出   NSRange: {1, 3}

}

// 类名,选择子等
{
    NSString * class = NSStringFromClass([NSArray class]);

    SEL sel =  @selector(typeConvert);
    NSString * selString = NSStringFromSelector(sel);

    NSLog(@"NSStringFrom ---- %@,%@",class,selString);
    // 输出   NSArray,typeConvert
}

}

/**

  • 字符串查找
  • 应用场景:见方法内部

    */

  • (void)searchMethod{

    // 返回bool值 ,应用场景为 根据某些特定条件进行判断是否需要做某些事情 { // hasPrefix:(NSString )str 字符串是否以 str 为前缀 BOOL aa = [demoString hasPrefix:@"aaa字"]; // hasPrefix:(NSString )str 字符串是否以 str 为后缀 BOOL bb = [demoString hasSuffix:@"法aaa"]; //与localizedStandardContainsString 作用一样 注意 NS_AVAILABLE(10_10, 8_0) 这个只能在 ios8 之后使用,在ios8 之前的系统使用会崩溃~! BOOL cc = [demoString containsString:@"法aaa"]; // localizedCaseInsensitiveContainsString:(NSString *)str 判断是否包含字符串,忽略大小写 BOOL dd = [demoString localizedCaseInsensitiveContainsString:@"法aAa"]; NSLog(@"localizedCaseInsensitiveContainsString >>>>>> %d---%d---%d---%d",aa,bb,cc,dd); // 输出 ---> 1---1---1---1 }

    / 返回 NSRange,根据特定的字符或字符串,返回特定字符串的起始位置和长度(返回的是第一个匹配到的位置) 应用场景:截取字符串,获取字符串的位置长度,或者某些算法可以用到 /

    { NSRange range = [demoString rangeOfString:demoString3];

    //iOS中NSCharacterSet的使用详解  http://blog.csdn.net/siji1449590363/article/details/46325459
    NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"字"];
    // 搜索(指定字符集合)
    NSRange range2 = [demoString rangeOfCharacterFromSet:set];
    
    NSLog(@"rangeOfString >>>>>>  %@---%@",NSStringFromRange(range),NSStringFromRange(range2));  // bb 为NSOrderedDescending  输出 ---&gt; {0, 3}---{3, 1}
    /*
     - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;
     - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;
     - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch locale:(nullable NSLocale *)locale NS_AVAILABLE(10_5, 2_0);
     这些方法根据此文件 compareMehtod 中的  NSStringCompareOptions枚举 自行理解
     */

    }

    / 返回 NSString 字符串在结尾处追加其他字符串 应用场景:遍历出字符串中有用的字符,然后拼成一个新的字符串等问题 /

    { NSString string1 = [demoString stringByAppendingString:@"123"]; NSString string2 = [demoString stringByAppendingFormat:@"1234"]; NSLog(@"stringByAppendingString >>>>>> %@--%@",string1,string2); // 输出 ---> aaa字符串的常用用法aaa123--aaa字符串的常用用法aaa1234

    } }

/**

  • 字符与数组
  • 方法内部的两个示例 在处理后台与客户端缓存时比较有用,例如后台下发或本地上传 多个产品或其他可以用id标识某一特定事物时可以拼接或者分割id 来做 客户端与后台之间的交互。 */

    • (void)arrayAndString{

    // 根据特定的字符串分割指定字符串为数据 NSArray array = [demoString2 componentsSeparatedByString:@","]; NSLog(@"componentsSeparatedByString >>>>>>>>> %@",array); / 输出

    ( a, b, c, d ) / // 根据特定的字符串 把数组拼接成一个字符串 NSString arrString = [array componentsJoinedByString:@"-"];

    NSLog(@"componentsJoinedByString >>>>>>>>> %@",arrString); // 输出 >>>>>>>>> a-b-c-d

}

/**

  • 字符串替换,插入,删除
  • / -(void)changeString{ // 替换 { NSString replace = [demoString stringByReplacingOccurrencesOfString:demoString3 withString:demoString4]; NSString replace1 = [demoString stringByReplacingOccurrencesOfString:demoString3 withString:demoString4 options:NSCaseInsensitiveSearch range:NSMakeRange(10, 3)]; NSString replace2 = [demoString stringByReplacingCharactersInRange:NSMakeRange(0, 3) withString:demoString4]; NSLog(@" %@ >>>> %@ >>>> %@",replace,replace1,replace2); // 输出 bbb字符串的常用用法bbb >>>> aaa字符串的常用用法aaa >>>> bbb字符串的常用用法aaa }

    // 插入 { NSMutableString * egString = [demoString mutableCopy]; [egString insertString:demoString4 atIndex:0]; // 不能用于不可变字符串 NSLog(@"%@",egString); // 输出 bbbaaa字符串的常用用法aaa }

    // 删除 { NSMutableString * egString = [demoString mutableCopy]; [egString deleteCharactersInRange:NSMakeRange(0, 3)]; // 不能用于不可变字符串 NSLog(@"%@",egString); // 输出 字符串的常用用法aaa }

} @end

写这些方法的时候有些是看别人的资料写的,如果看了上述问题还不够的话,那么您可以看下面两个地址去了解NSString 更多的方法和用处,这两篇文章介绍NSString 是非常全面有用的。 NSString超全总结 玩转NSString(不信你看)

共同学习,共同成长(我的处女贴)

收藏
1
sina weixin mail 回到顶部