精华内容
下载资源
问答
  • NSString 与C++ string字符串的互转实例详解 1. string 转换为 NSString  std::string str(hello); NSString *str=[NSString stringWithString:str.c_str()]; NSString *istr=[NSString stringWithString:@zsh];...
  • NSString+表情符号 入门 NSString (Emoji) 扩展了 NSString 类以提供与 Emoji 表情符号相关的自定义功能。 通过此类别,可以将转换为 unicode 表情符号字符,反之亦然(如果您需要将用户键入的消息发布到远程服务,...
  • NSString-Extra 给NSString增加一些实用的分类 1.MD5加密解密 2.HMAC加密解解密 包含服务器时间的HMAC加密 3.hsa1/256/512的加密解密 4.base64的编码和解码 5.URL特殊字符的编码和解码(ios9以下适用) 6.获取文件在...
  • NSString-fontSizeThatFitsRect NSString类别,用于获取NSString可以拥有并且仍然适合rect的最大字体大小。 当您想要最大化字体大小并保持在UI元素的范围内时,此选项很有用。 安装 将“ Source下的文件添加到您的...
  • NSString-HEX NSString 类上的十六进制实用程序类别。
  • 相信各位iOS开发者们都考虑过这个问题,平时写NSString的属性时都用copy,那strong要何时用呢?下面这篇文章就来看一下什么时候应该用copy,什么时候应该用strong。有需要的朋友们可以参考借鉴,下面来一起看看吧。
  • NSString_NSMutableString

    2016-01-18 15:28:36
    Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理。这两个类的最主要的区别是NSString创建赋值后不能动态修改长度和内容,除非给重新...
  • NSString用法总结

    千次阅读 2019-05-11 23:18:20
    写在开头 最近踩了多个string的坑,嗯嗯!还是要抽时间总结一下的,顺便在后面写几个自己写的或者学习别人的算法 1、NSString的创建 ...NSString * string_1 = [NSString string]; string...

    写在开头

    最近踩了多个string的坑,嗯嗯!还是要抽时间总结一下的,顺便在后面写几个自己写的或者学习别人的算法

    1、NSString的创建

    //使用字面量创建字符串
    NSString *string_0 = @"afeixiaohuozi";
            
    //使用类方法创建字符串
    NSString * string_1 = [NSString string];
    string_1 = @"afeixiaohuozi";//字符串赋值
          
    //创建一个字符串,并且将内容设置为string
    NSString * string_2 = [NSString  stringWithString:string_1];
            
    //格式化创建字符串(按照格式输出)
    NSString * string_3 = [NSString stringWithFormat:@"%@",string_1];
    NSString * string_4 = [NSString stringWithFormat:@"hello %d %c",5,'A'];
            
    //实例方法初始化
    NSString *string_5 = [[NSString alloc] init];
     
    //实例方法指定字符串
    NSString *string_6 = [[NSString alloc] initWithString:string_3];
            
    //实例方法创建字符串
    NSString *string_7 = [[NSString alloc] initWithFormat:@"%@",string_4 ];

    2、NSString的常用方法

    - (NSString *)substringFromIndex:(NSUInteger)from;
    - (NSString *)substringToIndex:(NSUInteger)to;
    - (NSString *)substringWithRange:(NSRange)range;   
    
    NSString *string_7 = [NSString stringWithFormat:@"afeixiaohuozi"];
            
    //获取字符串长度(有效字符长度,不包括'\0')
    NSInteger length = [string_7 length];
    //同样可以
    NSInteger length = string_7.length;
    
    
    //检测字符是否以指定内容开头
    if ([string_7 hasPrefix:@"shan"]) {
        NSLog(@"是的");
    }
        
    //检测字符串是否以指定内容结尾
    if ([string_7 hasSuffix:@"long"]) {
        NSLog(@"是的");
    }
            
    //字符串截取
    //从哪个索引开始截取到字符串末尾(包含索引位置)
    NSString *str0 = [string substringFromIndex:4];
            
    //从字符串开头截取到哪个索引(不包含索引位置)
    NSString *str1 = [string substringToIndex:8];
            
    //截取一定范围(从下标3开始截取4个字符)
    NSRange range = {3,4};
    NSString *str2 = [string substringWithRange:range];
    
    
    //关于NSRange的相关用法
    //关于NSRange,请参考另一篇文章:添加链接
    - (NSRange)rangeOfString:(NSString *)searchString;
    - (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 API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));
    

    NSRange相关用法链接:NSRange用法 

    //NSStringCompareOptions相关链接 
    //用于字符串的检索
    typedef NS_OPTIONS(NSUInteger, NSStringCompareOptions) {
        
        //不区分大小写比较
        NSCaseInsensitiveSearch = 1,    
        
        //逐字节比较 区分大小写
        NSLiteralSearch = 2,            
        
        //从字符串末尾开始搜索
        NSBackwardsSearch = 4,          
        
        //搜索限制范围的字符串
        NSAnchoredSearch = 8,           
        
        //按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt
        NSNumericSearch = 64,           
    
        //忽略 "-" 符号的比较
        NSDiacriticInsensitiveSearchNS_ENUM_AVAILABLE(10_5, 2_0) = 128,
        
        //忽略字符串的长度,比较出结果
        NSWidthInsensitiveSearchNS_ENUM_AVAILABLE(10_5, 2_0) = 256,
        
        //忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending
        NSForcedOrderingSearchNS_ENUM_AVAILABLE(10_5, 2_0) = 512,
        
         //只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:... 方法。使用通用兼容的比较方法,如果设置此项,可以去掉 NSCaseInsensitiveSearch 和 NSAnchoredSearch
        NSRegularExpressionSearchNS_ENUM_AVAILABLE(10_7, 3_2) = 1024  
    };

    3、NSString比较

    NSString *string_8 = @"afeixiaohozi";
    NSString *string_9 = @"hai afeixiaohuozi";
    //比较地址  
    //有一个例外,若是这两个字符串的内容是相同的,那么,这个 == 就是成立的,因为指针指向同一个地址
    if (string_8 == string_9) {
    }
    
    //比较内容
    if ([string_8 isEqualToString:string_9]) {
        NSLog(@"一样的~~");
    }else {
        NSLog(@"不一样~~");
    }   
            
    if ([string_8 compare:string_9] == NSOrderedSame) {
        NSLog(@"相等");
    }
    else if ([string_8 compare:string_9] == NSOrderedAscending)
    {
        NSLog(@"升序");
    }
    else if ([string_8 compare:string_9] == NSOrderedDescending)
    {
        NSLog(@"降序");
    }      
            
    //NSCaseInsensitiveSearch  忽略大小写(@“123”,@“0123”字符串比较)
    NSComparisonResult result = [string_8 compare:string_9 options:NSCaseInsensitiveSearch];
    if (result == NSOrderedSame) {
        NSLog(@"相等");
    }else if (result == NSOrderedAscending) {
        NSLog(@"升序");
    }else if (result == NSOrderedDescending) {
        NSLog(@"降序");
        }
    }
    
    //比较返回值
    typedef NS_CLOSED_ENUM(NSInteger, NSComparisonResult) {
        NSOrderedAscending = -1L,  //升序 :前者大于后者
        NSOrderedSame,              //相等 
        NSOrderedDescending         //降序 :前者小于后者
    };
    

    NSString的compare相关方法还有很多,没有一一进行使用,

    嗯嗯,放在这里吧!万一啥时候去查询一下

    #pragma mark *** String comparison and equality ***
    
    /* In the compare: methods, the range argument specifies the subrange, rather than the whole, of the receiver to use in the comparison. The range is not applied to the search string.  For example, [@"AB" compare:@"ABC" options:0 range:NSMakeRange(0,1)] compares "A" to "ABC", not "A" to "A", and will return NSOrderedAscending. It is an error to specify a range that is outside of the receiver's bounds, and an exception may be raised.
    */
    - (NSComparisonResult)compare:(NSString *)string;
    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare;
    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare locale:(nullable id)locale; // locale arg used to be a dictionary pre-Leopard. We now accept NSLocale. Assumes the current locale if non-nil and non-NSLocale. nil continues to mean canonical compare, which doesn't depend on user's locale choice.
    - (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
    - (NSComparisonResult)localizedCompare:(NSString *)string;
    - (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string;
    
    /* localizedStandardCompare:, added in 10.6, should be used whenever file names or other strings are presented in lists and tables where Finder-like sorting is appropriate.  The exact behavior of this method may be tweaked in future releases, and will be different under different localizations, so clients should not depend on the exact sorting order of the strings.
    */
    - (NSComparisonResult)localizedStandardCompare:(NSString *)string API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

    4、字符串拼接

    //字符串拼接
    NSString *string_10 = [string_7 stringByAppendingString:string_8];
    NSString *string_11 = [NSString stringWithFormat:@"%@%@",string_7,string_8];
        
    NSString *string_12 = [string_7 stringByAppendingFormat:@"-%@",string11];
        
    //将数字字符串转换为数字
    NSString *string_13 = @"123";
    NSInteger integer = [string13 integerValue];
        
    //字符串所有字符大写
    NSString *string_14 = @"afeixiaohuozi";
    NSString *str14 = [string_14 uppercaseString];
        
    //字符串所有字符小写
    NSString *string_15 = @"AFEIXIAOHUOZI";
    NSLog(@"%@",[string_15 lowercaseString]);
        
    //首字母大写
    NSLog(@"%@",[string_14 capitalizedString]);
        
    //替换
    NSString *string_16 = @"文艺青年";
    string_16 = [string_16 stringByReplacingOccurrencesOfString:@"文艺" withString:@"伪文艺"];
        
    //删除原字符串中的所有指定字符,变为空
    NSString * string_18 = [string_16 stringByReplacingOccurrencesOfString:@"文" withString:@""];
        
        
    //从下标0开始替换2长度的字符
    NSString *string_17 = [string_16 stringByReplacingCharactersInRange:NSMakeRange(0, 2) withString:@"真的是"];
        
    NSRange rang = [string_16 rangeOfString:@"文艺"];
    string_17 = [string_16 stringByReplacingCharactersInRange:rang withString:@"哈哈哈"];
        
        
    //去掉两端空格
    string_18 = [string_7 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        
        
    //C语言字符串转化成OC字符串
    NSString *str_20 = [NSString stringWithCString:"afeixiaohozi" encoding:NSUTF8StringEncoding];
    
    //OC语言字符串转化成C字符串
    const char *cStr = [string_8 cStringUsingEncoding:NSUTF8StringEncoding];
    

    5、字符串拼接时候的坑

    在修改一个bug的时候,平时用NSString字符串拼接总是失败(还是自己太粗心了)

    NSString 的拼接方法是有返回值的,只有在返回值里面才是拼接好的字符串

    - (NSString *)stringByAppendingString:(NSString *)aString;
    - (NSString *)stringByAppendingFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
    //NSString 的拼接方法是有返回值的,只有在返回值里面才是拼接好的字符串
    NSString *string_1  = nil;
    NSString *string_2  = @"Afeixiaohiozi";
        
    [string_1 stringByAppendingString:string_2];
    NSLog(@"string_1 = %@",string_1); //string_1 = (null)
    
    
    //因为sring_1为空 结果返回值依旧是 nil
    string_1 = [string_1 stringByAppendingString:string_2];
    NSLog(@"string_1 = %@",string_1);//string_1 = (null)
    
    
    //so ,至少应该下面这样
    NSString *string_1 = [NSString string]  ;
    NSString *string_2  = @"Afeixiaohiozi";
        
    string_1 = [string_1 stringByAppendingString:string_2];
    NSLog(@"string_1 = %@",string_1);//string_1 = Afeixiaohiozi
    
    //或者像这样
    NSString *string_1 = @"I Am "  ;
    NSString *string_2  = @"Afeixiaohiozi";
        
    string_1 = [string_1 stringByAppendingString:string_2];
    NSLog(@"string_1 = %@",string_1); //string_1 = I Am Afeixiaohiozi
    
    
    //当然,也有没有返回值的拼接
    //NSMutableString相关方法,也应该好好总结一下了
    NSMutableString *nameStr = [NSMutableString string]
        
    [nameStr appendString:string_2];
    NSLog(@"nameStr = %@",nameStr);//nameStr = Afeixiaohiozi
    
    //如果
    
    NSMutableString *nameStr;
    [nameStr appendString:string_2];
    NSLog(@"nameStr = %@",nameStr); //nameStr = (null)
    
    
    /*
    不论是NSString 或者 NSMutableString 存储拼接后的字符串都是需要先申请空间的
    */
    

    6、获取NSString中所有匹配子字符串的NSRange的array 

    NSString *string1=@"abcdefabcdefabcdefabcdefbcd";
    NSString *string2=@"bcd";
     
    NSArray *array=[string1 componentsSeparatedByString:string2];
    NSMutableArray *arrayOfLocation=[NSMutableArray array];
    int d=0;
    for (int i = 0; i < array.count - 1; i++) {
            NSString *string = array[i];
            NSNumber *number = [NSNumber numberWithInt:d += string.length];
            d += string2.length;
            [arrayOfLocation addObject:number];
     
    }
    NSLog(@"%@",arrayOfLocation);

     7、字符串高亮

     关于字符串高亮的算法,请参考另一篇文章:

     

     

    展开全文
  • ios demo,NSData和NSString之间的相互转换的源代码。
  • NSString-BlockHelper NSString + BlockHelper 例子 NSString *word1 = @"word1"; NSString *word2 = @"word2"; NSString *word3 = word1.add(@" ").add(word2); NSLog(@"%@",word3); //output : word1 ...
  • nsstring

    千次阅读 2013-03-07 12:09:57
    本文转自 ... /将str的最后一个字符去,如果是存储的汉字,要-2,因为汉字占用2个字节。 str = [str substringToIndex:[str length] - 1]; //1、创建常量字符串。  NSString *astring = @"Th

    本文转自

    http://blog.csdn.net/amdbenq/article/details/7869166

    //url转string

    NSString *str1 = [URL absoluteString]; 

    /将str的最后一个字符去,如果是存储的汉字,要-2,因为汉字占用2个字节。

    str = [str substringToIndex:[str length] - 1];

    //1、创建常量字符串。
        NSString *astring = @"This is a String!";

     

    //2、创建空字符串,给予赋值。

        NSString *astring = [[NSString alloc] init];
        astring = @"This is a String!";
        NSLog(@"astring:%@",astring);
      [astring release];

     

    //3、在以上方法中,提升速度:initWithString方法

        NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
        NSLog(@"astring:%@",astring);
        [astring release];

     

     //4、用标准c创建字符串:initWithCString方法

        char *Cstring = "This is a String!";
        NSString *astring = [[NSString alloc] initWithCString:Cstring];
        NSLog(@"astring:%@",astring);
        [astring release];

     

    //5、创建格式化字符串:占位符(由一个%加一个字符组成)

        1):这类方法称为简便(convenience)方法或工厂方法,并且返回自动释放的对象,使用了自动释放池

        int i = 1;
        int j = 2;
        NSString *astring = [NSString stringWithFormat:@"%d.This is %i string!",i,j];
        NSLog(@"astring:%@",astring);
       

        2):这类方法虽然代码复杂一些,但性能比简便方法好

        int i = 1;
        int j = 2;
        NSString *astring = [[NSString alloc] initWithFormat::@"%d.This is %i string!",i,j];

        NSLog(@"astring:%@",astring);

        [astring release];

    //6、创建临时字符串

        NSString *astring;
        astring = [NSString stringWithCString:"This is a temporary string"];
        NSLog(@"astring:%@",astring);


        NSString *path = @"astring.text";
        NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
        NSLog(@"astring:%@",astring);
        [astring release];


        NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
        NSLog(@"astring:%@",astring);
        NSString *path = @"astring.text";    
        [astring writeToFile: path atomically: YES];
        [astring release];

    //用C比较:strcmp函数

        char string1[] = "string!";
        char string2[] = "string!";
        if(strcmp(string1, string2) = = 0)
        {
            NSLog(@"1");
        }

     

     

    //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为真)

    //如何判断字符串为空

    NSString *urlString = [urlInput stringValue];

     
    if (!urlString) { 
     
     
    NSLog( @”NO INPUT.” );

     
    } else { 
     
    if ([urlString length] == 0 ) {

     
    NSLog( @”NO INPUT.” );

     
    } else {

     
    }

     

     

     

    Convert NSString to int

    1 NSString *aNumberString = @"123";
    2 int i = [aNumberString intValue];

     

    Convert int to NSString

    1 int aNumber = 123;
    2 NSString *aString = [NSString stringWithFormat:@"%d", aNumber];



    NSString方法
    +(id) stringWithContentsOfFile:path encoding:enc error:err
    创建一个新字符串并将其设置为path指定的文件的内容,使用字符编码enc,如果非零,则返回err中错误
    +(id) stringWithContentsOfURL:url encoding:enc error:err
    创建一个新的字符串,并将其设置为url的内容,使用字符编码enc,如果非零,则返回err中的错误
    +(id) string
    创建一个新的空字符串
    +(id) stringWithString:nsstring
    创建一个新的字符串,并将其设置为nsstring
    -(id)initWithString:nsstring
    将分配的字符串设置为nsstring
    -(id) initWithContentsOfFile:path encoding:enc error:err
    将字符串设置为path制定的文件的内容
    -(id) initWithContentsOfURL:url encoding:enc error:err
    将字符串设置为url(NSURL *)url的内容,使用字符编码enc,如果非零,则返回err中的错误
    -(id) (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
    测试字符串是否以nsstrng结尾
    -(BOOL)isEqualToString:nsstring
    测试两个字符串是否相等
    -(NSString *) capitalizedString
    返回每个单词首字母大写的字符串(每个单词的其余字母转换为小写)
    -(NSString *)lowercaseString
    返回转换为小写的字符串
    -(NSString *)uppercaseString
    返回转换为大写的字符串
    -(const char*)UTF8String
    返回转换为UIF-8字符串的字符串
    -(double)doubleValue
    返回转换为double的字符串
    -(float)floatValue
    返回转换为浮点值的字符串
    -(NSInteger)integerValue
    返回转换为NSInteger整数的字符串
    -(int)intValue
    返回转换为整数的字符串


    NSMutableString方法
    +(id) stringWithCapacity:size
    创建一个字符串,初始包含size的字符
    -(id) initWithCapacity:size
    使用初始容量为size的字符串来初始化字符串
    -(void) setString:nsstring
    将字符串设置为nsstring
    -(void) appendString:nsstring
    在接收者的末尾附加nsstring
    -(void) deleteCharactersInRange:range
    删除指定range中的字符
    -(void) insertString:nsstring atIndex:i
    以索引i为起始位置插入nsstring
    -(void) replaceCharactersInRange:range withString:nsstring
    使用nsstring替换range指定的字符
    -(void) replaceOccurrencesOf
    String:nsstring withString:
    nsstring2 options:opts range:range

    根据选项opts。使用指定range中 的nsstring2替换所有的nsstring。选项可以包括NSBackwardsSearch(从范围的结尾开始搜 索)NSAnchoredSearch(nsstring必须匹配范围的开始),NSLiteralSearch(执行逐字节比较以及 NSCaceInsensitiveSearch的按位或组合)




    NSMutableString  

    [aString substringToIndex:([aString length]-1)];//字符串删除最后一个字符

    //字符串删除最后一个字符

     NSRange range = {0,1};

     [aStr deleteCharactersInRange:range];


    NSString是不可变的,意思是他声明的对象我们不可以改变,如果要改变,可以使用它的子类:NSMutableString

     

    你可以使用类方法:stringWithCapacity来创建一个新的NSMutableString,声明如下:

     

    *  (id) stringWithCapacity: (unsigned) capacity:

     

    可按如下方法声明一个新的可变字符串:

    NSString *str1;

    Str1 = [NSMutableString stringWithCapacity:42];

     

    可以使用appendString或appendFormat来对可变字符串操作:

      - (void)appendString: (Nsstring *) aString;

      -  (void) appendFormat: (NSString *) Format;

     

    appendString 接受参数aString,然后将其复制到接受对象的末尾。

    appendFormat类似,他将格式化的字符串附加在接受对象的末尾,而不是创建新的对象。

     

    EXP:

    NSMutableString *string;

    string = [NSMutableString stringWithcapacity:50];

    [string appendString: @”hello,there”];

    [string appendFormat: @”human %d!”, 39];

     这段代码的string最后被赋值为:hello,there human 39!

     

    你还可以使用deleteCharactersInRange:方法来删除字符串中的字符:

    - (void) deleteCharactersInRange: (NSRange) range;

     

    通常将deleteCharactersInRange: 和rangeOfString:连在一起使用,NSMutableString可以使用NSString的全部功能,包括rangeOfString:、字符串比较和其他任何功能。

     

    例如,你列了一个所有朋友列表,你突然又不喜欢Jack了,想把他从朋友列表里删除:

     

    //朋友列表初始化

    NSMutableString *friends;

    friends = [NSMutableString stringWithcapacity: 50];

    [friends appendString: @”level fang jack even”];

     

    //找到jack并且删除

    NSRange jackRange;

    jackRange = [friends rangeOfString: @”jack”];

    jackRange.length++; //eat the space that follows

    [friends deleteCharactersInRange: jackRange];

    展开全文
  • NSString哈希 NSString类别,用于MD5,SHA1,SHA256,SHA512哈希和具有较小内存使用量的文件的哈希 NSString哈希方法 string.md5String string.sha1String string.sha256String string.sha512String HMAC哈希方法...
  • NSString扩展类

    2013-10-15 00:49:59
    自己闲着没事把常用的NSString处理封装了一个大牛类,包括常用的字符串处理,本地存储,小伙伴拿到后倒入工程,对于一些复杂的处理,一句话搞定
  • NSString详解

    千次阅读 2015-08-19 21:16:43
    NSString、NSArray、NSSet、NSDictionary、NSDate、NSObject 其中NSString有子类NSMutableString,NSArray有子类NSMutableArray,NSSet有子类NSMutableSet,NSDictionary有子类NSMutableDictionary 2、NSString:不
    1、Foundation框架中几个重要的类:
    NSString、NSArray、NSSet、NSDictionary、NSDate、NSObject
    其中NSString有子类NSMutableString,NSArray有子类NSMutableArray,NSSet有子类NSMutableSet,NSDictionary有子类NSMutableDictionary
    2、NSString:不可变字符串
    子类NSMutableString:可变字符串
    3、字符串的创建方式:
    (1)直接赋值创建  NSString *s1=@“Jack”;
    (2)NSString *s2=[[NSString alloc] initWithString:@“jack”];
    (3)创建对象调用格式化对象方法创建
    NSString *s3=[[NSString alloc] initWithFormat:@“age is %d”,10];
    (4)也可以调用类方法按一定格式创建:
    NSString *s=[NSString stringWithFormat:@“Now is %@”,[NSDate date]];
    (5)也可以将两个字符串拼接出一个新的字符串(不改变原来的东西)举例如下:将str2连接在str1后面生成新的字符串str3
    NSString *str3=[str1 stringAppendingString:str2];
    (6)创建对象调用将c字符串装换为OC字符串的对象方法
    NSString *s4=[[NSString alloc] initWithUTF8String:”Jim”];
    (注意:是c语言字符串,不是OC字符串,不可加@)就是说此方法可以把C语言字符串转化为OC字符串。
    (7)将OC字符串对象装换为C字符串
    const char *cs=[s4 UTF8String];此方法将OC字符串转化为C语言字符串。
    (8)将文件中内容转为字符串,可用如下对象方法:
    NSString *s=[[NSString alloc] initWithContentsOfFile:(NSString *) encoding:(NSStringEncoding) error:(NSError **)];
    第一个参数为要读取文件的绝对路径,第二个为文件编码:如果要读取为中文的话都一律设为NSUTF8StringEncoding  最后一个参数统统先设为nil值,举例如下所示:
    NSString *s5=[[NSString alloc] initWithContentsOfFile:@“/Users/apple/Desktop/1.txt”encoding:NSUTF8StringEncoding  error:nil];
    (9)将指定资源路径的内容读取到字符串中:可用如下方法对象方法——>
    NSString *s=[[NSString alloc] initWithContentsOfURL:(NSURL *) encoding:(NSStringEncoding) error:(NSError **)];
    举例如下:
    NSURL *url=[[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
            NSString *s6=[[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
            NSLog(@"\n%@",s6);
    注意:NSURL *是指资源的地址 格式是:协议头://路径
    可以是网络资源、FTP服务器资源、也可以是本地文件资源 例如:
    ftp://路径  ftp://路径  或 http://weibo.com/a.txt
    encoding:编码一般读取中文都是NSUTF8StringEncoding
    error:暂且赋值为nil 空值。如果URL是网址的话,就会把指定网页的标签元素给全部读取,百度网页的编码是utf8,其他网页可能不是。切记:如果为本地文件路径前面必须要有一个‘/’,跟协议头格式不同,一个‘/’都不可以少。
    (10)以上NSString的对象方法均可用以下的类方法代替:
     <1>NSString *str=[NSString stringWithUTF8String:(const char *)]
    <2> NSString *str1=[NSString stringWithCString:(const char *) encoding:(NSStringEncoding)];
    <3>NSString *str=[NSString stringWithString:(NSString *)];
    <4>NSString *str=[NSString stringWithContentsOfURL:(NSURL *) encoding:(NSStringEncoding) error:(NSError **)];
    <5>NSString *str=[NSString stringWithFormat:(NSString *), ...];  等等
    注意:可以看出NSString的对象方法名除了stringAppendingString方法外,基本都是以initWith开头的,而它的类方法大部分以stringWith开头。而NSNumber的对象方法都以initWith开头,而它的类方法大都以numberWith开头。同样,NSURL的对象方法以initWith开头,它的类方法都以URL开头。……
    规律总结:
    (一)系统提供的类方法基本都有一个功能相同的对象方法与之对应,假设一个系统提供的类为NSXxx,它的类方法都是以initWith开头的,它的对象方法基本都是以Xxx开头或xxx开头的。
    (二)URL是资源的地址,必须要有协议头,协议头的格式是:协议头:// 
    特别是本地资源要用协议头“file://”,如果不想手动加file://,也可以在生成URL的时候用如下方法,即:
    NSURL *url=[NSURL fileURLWithPath:(NSString *)];举例如下:
    NSURL *url=[NSURL fileURLWithPath:@“/Users/apple/Desktop/1.txt”];就是说用了这个URL的生成方法就会自动在前面加上表示本地资源的协议头。
    4、将字符串写到一个文件中(字符串的导出):要用到如下方法:
    (1)写到本地文件。[s writeToFile:(NSString *) atomically:(BOOL) encoding:(NSStringEncoding) error:(NSError **)];
     (2)写到指定的路径。[s writeToURL:(NSURL *) atomically:(BOOL) encoding:(NSStringEncoding) error:(NSError **)];
    (3)举例如下: [@“Liu Xun”, writeToFile:@"/Users/apple/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
    注意:atomiclly:表示是否为原子操作,如果传入YES,表示如果写入失败将不会在指定的路径创建文件,如果为NO的话无论写入是否成功都会创建文件。
    另外要写进文件的字符串中如果想写进文件后想在某个位置换行,就要事先在字符串中的这个位置添加“\n”。(检测有多少行代码的原理就是看看有多少换行符即可)
    写到本地指定文件地址前不加协议头,写到URL要加协议头。
    5、字符串的比较:
    (1)一般比较(不忽略大小写):可以用对象方法compare也可以用对象方法isEqualToString。返回结果是NSComparisonResult类型,如果左边>右边返回结果为NSOrderedDescending,如果左边小于右边返回NSOrderedAscending,如果左边等于右边则返回NSOrderedSame。如果忽略大小写进行比较就使用caseInsensitiveCompare方法。
    6、不改变原先字符串基础上,从字符串中的截取字串。
    subStringToIndex:返回一个字串,从首字符到下标为index-1的字符
    subStringFromIndex:返回一个字串,从index位置到结尾。
    subStringWithRange:返回一个Range返回的字串。例如:
    NSString *newStr=[str subStringWithRange:NSRange(位置,长度)]; 或
    NSString *newStr=[str subStringWithRange:range对象];
    7、连接两个字符串生成一个新的字符串:用stringByAppendingString方法。例:NSString *str3=[str1 stringByAppedningString :str2];
    8、字符串的查找:
    (1)判断是否以某串开头,用hasPrefix 如int i=[str hasPrefix:@“1”];
    (2)判断是否以某串结尾,用hasSuffix如int i=[str hasSuffix:@“.txt”];
    (3)查找字符串中某个字串的范围(起始位置与长度)用rangeOfString方法返回一个Range,如果没有找到返回值的location变量为NSNotFound。例如
    NSRange subRange=[str rangeOfString:@“subString”];
    if(subRange.location=NotFound){  //  }
    (4)查找某个下标的字符:用characterIndex方法,返回一个字符
    char c=[str  characterAtIndex: i ];
    9、以某标志切割字符串,存到一个新的数组中:用componentsSeparedByString方法返回一个NSArray数组类型,可以用数组的objectAtIndex进行字串的获取。例如:
    NSString *str=@"1,2,3,4,5,6,7,8";
    NSArray *array=[str componentsSeparatedByString:@","];
    //拿到array第0个位置的字符串, array: [1,2,3,4,5,6,7]
    NSString *str3 = [array objectAtIndex:0]; //输出1

    代码验证,实例如下:

    在main.m中编辑如下:

    //
    //  main.m
    //  NSStringExample
    //
    //  Created by apple on 15/8/19.
    //  Copyright (c) 2015年 liu. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    void Test1(){
        NSLog(@"Test1验证创建字符串的一般方式=========");
        NSString *s1 = @"Liu Xun"; //直接创建
        NSString *s2 = [[NSString alloc] initWithString:@"Liuxun1993"];//以对象方式初始赋值
        //按指定的格式以对象方法创建
        NSString *s3 = [[NSString alloc] initWithFormat:@"Liuxun %d 年出生",1993];
        //按指定的格式以类方法创建
        NSString *s4 = [NSString stringWithFormat:@"I age is %d",22];
        //用对象方法将两个字符串拼接成一个新的字符串
        NSString *s5= [@"I am " stringByAppendingString:@"Liuxun"];
        //用对象方法将c字符串(引号前没有@即char *类型)转化为OC字符串
        NSString *s6 = [[NSString alloc] initWithUTF8String:"我毕业于黄淮"];
        //用类方法将c字符串(引号前没有@即char *类型)转化为OC字符串
        NSString *s7 = [NSString stringWithUTF8String:"我毕业于黄淮"];
        //将OC字符串转换为C语言字符串
        const  char *s8=[s6 UTF8String];
        NSLog(@"s1=%@", s1);
        NSLog(@"s2=%@", s2);
        NSLog(@"s3=%@", s3);
        NSLog(@"s4=%@", s4);
        NSLog(@"s5=%@", s5);
        NSLog(@"s6=%@",s6);
        NSLog(@"s7=%@",s7);
        NSLog(@"%s",s8);
    }
    void Test2(){ //字符串的 比较、截取、查找、切割
        //用compare或isEqualToString比较字符串的大小
        NSComparisonResult result=[@"liuxun" isEqualToString:@"liuju"];
        if(result == NSOrderedSame){
            NSLog(@"左边等于右边");
        }else if (result == NSOrderedAscending){
            NSLog(@"左边等于右边");
        }else if(result == NSOrderedDescending){
            NSLog(@"左边大于右边");
        }
        
        //利用substringFromIndex和substringToIndex进行字符串的截取
        NSString *sub1 = [@"liuxun" substringFromIndex:3];
        NSString *sub2 = [@"liuxun 1993" substringToIndex:5];
        NSLog(@"sub1= %@ sub2= %@",sub1,sub2);
        
        BOOL b = [@"liuxun" hasPrefix:@"liu"];//判断某字符串是否以另一串开头
        BOOL b1 = [@"liuxun" hasSuffix:@"xun"];//判断某字符串是否以另一串结尾
        NSLog(@"b= %d b1=%d",b,b1);
        //查找字符串中某个字串的范围
        NSRange range=[@"liuxun1993" rangeOfString:@"xun"];
        NSLog(@"location=%ld length= %ld",range.location,range.length);
        //查找某个下标的字符
        unichar c=[@"liuxun" characterAtIndex:4];
        NSLog(@"下标为四的字符是:%c",c);
        
        NSString *str=@"liu xun, liu ju,mu qin,grand parent";
        NSArray *array=[str componentsSeparatedByString:@","];
        for (int i=0; i<array.count; i++) {
            NSLog(@"%@",[array objectAtIndex:i]);
        }
    }
    void Test3(){ //字符串与文件有关的操作
        //使用对象方法将指定本地资源路径的内容读取到字符串中
        NSString *f1 = [[NSString alloc] initWithContentsOfFile:@"/Users/apple/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];
        //使用类方法将指定本地资源路径的内容读取到字符串中
        NSString *f2 = [NSString stringWithContentsOfFile:@"/Users/apple/Desktop/2.txt" encoding:NSUTF8StringEncoding error:nil];
        //使用对象方法指定资源路径的内容读取到字符串中(带协议头的NSURL生成方法)
        NSURL *url1= [[NSURL alloc] initWithString:@"file:///Users/apple/Desktop/1.txt"];
        NSString *f3 = [[NSString alloc] initWithContentsOfURL:url1 encoding:NSUTF8StringEncoding error:nil];
        //使用类方法将指定资源路径的内容读取到字符串中(带协议头的NSURL生成方法)
        NSURL *url2 = [NSURL URLWithString:@"file:///Users/apple/Desktop/2.txt"];
        NSString *f4 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
        //使用资源对象方法将字符串写到指定的3.txt文件中(不手动带协议头的URL方法)
        NSString *t = @"苦心人天不负,\n卧薪尝胆,\n三千越甲可吞吴\n";
        NSURL *url3 = [[NSURL alloc] initFileURLWithPath:@"/Users/apple/Desktop/3.txt"];
        [t writeToURL:url3 atomically:YES encoding:NSUTF8StringEncoding error:nil];
        //使用资源类方法将字符串写到指定的4.txt文件中(不用带协议头的字符串)
        NSString *t1= @"咬定青山不放松,\n立根原在破岩中.\n千磨万击还坚劲...\n";
        [t1 writeToFile:@"/Users/apple/Desktop/4.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"\n读取f1=\n%@",f1);
        NSLog(@"\n读取f2=\n%@",f2);
        NSLog(@"\n读取f3=\n%@",f3);
        NSLog(@"\n读取f4=\n%@",f4);
        /*
         注意:将字符串写进文件的时候,若想在文件中某个位置换行,就必须事先在字符串中的对应位置添加"\n"。
         */
    }
    int main(int argc, const char * argv[])
    {
        
        @autoreleasepool {
            //        Test1();
            //       Test2();
            Test3();
        }
        return 0;
    }
    
    运行前桌面不存在3.txt和4.txt 

    存在1.txt和2.txt打开如下图



    单独运行Test1()结果如下:


    单独运行Test2()结果如下:


    单独运行Test3() 结果如下:


    此时桌面多了3.txt和4.txt文件,打开如下:


    展开全文
  • NSString扩展

    2013-06-26 18:04:09
    个人总结,仅供参考;废话一句,全为二十。
  • NSString

    千次阅读 2015-09-20 22:06:15
    NSString是1个数据类型.用来保存OC字符串的.其实NSString是Foundation框架中的1个类. 作用: 存储OC字符串的 所以.OC中的字符串本质上是用NSString对象来存储的. 其实完整的标准的创建NSString对象的方式NSString *...
    1. NSString是1个数据类型.用来保存OC字符串的.

      1. 其实NSString是Foundation框架中的1个类.
        作用: 存储OC字符串的
        所以.OC中的字符串本质上是用NSString对象来存储的.

      2. 其实完整的标准的创建NSString对象的方式

      NSString *str0 = [NSString new];
      NSString *str1 = [NSString string];

      这种方式创建的字符串是空字符串 @”“

      但是.NSString是我们最常用的1个对象 所以OC使用了1种更为简单的方式来创建字符串对象.

      直接使用@来表示1个OC字符串.

      @”jack” 这个其实本质上是1个NSString对象.

      NSString *str = @”jack”;

      @”jack” 是1个NSString对象 str的值是这个对象的地址.

      %p 打印的是指针变量的值
      %@ 打印的是指针变量指向的对象.


    1. NSString最常用的类方法.

      1). + (instancetype)stringWithUTF8String:(const char *)nullTerminatedCString;
      instanceType 作为返回值 代表返回的是当前这个类的对象.
      作用:将C语言的字符串转换为OC字符串对象.


    2). + (instancetype)stringWithFormat:(NSString *)format, ...  使用频率100分.
    
        作用: 拼接1个字符串对象.使用变量或者其他数据拼接成OC字符串.
    
         int age = 19;
         NSString *name = @"小明";
    
    
         //@"大家好我叫xx 我的年龄是xx"
         NSString *str =  [NSString stringWithFormat:@"大家好,我叫%@,我今年%d岁",name,age];
         NSLog(@"str = %@",str);
    

    1. 最常用的对象方法
      1). length方法 返回值为NSUInteger 其实就是unsigned long
      得到字符串的字符的个数 可以处理中文.

      2). 得到字符串中指定下标的字符.
      - (unichar)characterAtIndex:(NSUInteger)index;
      返回值是unichar 其实就是unsinged short 占据2个字节.

      如果要输出unichar变量的值使用%C  这是大写的C 
      %c
      

      3). 判断两个字符串的内容是否相同.

      a. 判断两个字符串的内容是否相同 不要用==去判断  因为这样有可能会出问题.
      
      b. 判断相等的方式.
      
         - (BOOL)isEqualToString:(NSString *)aString;
      
         所以,判断两个字符串是否相等 应该使用这个方法区判断 才会得到正确的结果.
      

      4).比较字符串的大小.

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

    完全可以使用int类接收结果. 因为返回值是1个枚举.
    返回值如果是 :
    -1 说明小于
    0 等于
    1 大于.

    展开全文
  • swift4之String与NSString的区别与使用

    千次阅读 2019-03-27 18:05:02
    本文主要介绍了String和NSString常用栗子。包括String和NSString各自独有的API以实现不同的功能,及它们的共有的功能。
  • NSString *nsstring = @”这是个NSString字符串, nsstring”; NSLog(@”cString字符串–>%s “,cString); NSLog(@”NSString字符串–>%@”,nsstring); const char *cString2 = [nsstring UTF8String]; NSString *...
  • NSString都存储在堆区吗?会不会存在栈区,或者数据区呢? NSString用copy修饰还是strong修饰?NSString调用copy和mutableCopy会创建一个新的内存空间吗?NSMutableString用copy修饰会导致什么样的后果? 一.各类型字符...
  • NSString富文本编辑 字符串长度计算demo仅供参考!
  • NSString+Extended

    2013-05-26 13:04:13
    iOS 字符串扩展操作 NSString
  • 该篇博客主要讨论在Objective-C中对于NSString变量的引用计数的不同处理。 为了在测试中打印方便,我们可以简单的定义一个宏: #define MDMLog(str) ({NSString *name = @#str; NSLog(@"%@--&gt;%@ %p,...
  • NSString+QualifierSearchParser NSString 类别,用于使用限定符(如 github 代码搜索或 gmail 过滤)解析搜索查询。 从NSString将创建一个NSDictionary其中包含为给定限定符找到的值。 接受以下形式的查询: ...
  • + (NSString*) encodeString:(NSString*)unencodedString { // CharactersToBeEscaped = @":/?&=;+!@#$()~',*"; // CharactersToLeaveUnescaped = @"[]."; NSString *encodedString = (NSString *) ...
  • NSString *string = [[NSString alloc] init]; string = @”i am an iOSDevTip too!”; (3)用initWithString创建字符串 代码如下: NSString *string = [[NSString alloc] initWithString:@”iOSDevTip is here!”...
  • OC下NSString转ASCII.ASCII转NSString

    千次阅读 2018-06-23 16:48:12
    打个比方.我现在想把对应的0.1.2.3.4等转成A.B.C.D....//比如现在有一个NSString:@&quot;0&quot; NSString *str = @&quot;0&quot;; //1.转换成const char*类型.这里得出的是char*指针 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 260,376
精华内容 104,150
关键字:

nsstring