美文网首页iOS 进阶
iOS NSString用法总结

iOS NSString用法总结

作者: JaneHooK | 来源:发表于2018-10-17 14:41 被阅读13次

    字符串属性

        //////////字符串属性//////////
        NSString *str1 = @"string";
        
        NSLog(@"长度:                   %ld", str1.length);
        NSLog(@"描述:                   %@", str1.description);
        NSLog(@"哈希地址:                %lu", (unsigned long)str1.hash);
        NSLog(@"字符串对应下标字符:        %c", [str1 characterAtIndex:2]);
        //输出:   长度:                   6
        //输出:   描述:                   string
        //输出:   哈希地址:                10152471993823965
        //输出:   字符串对应下标字符:        r
    

    字符串截取

    //截取指定位置之后的字符串
    - (NSString *)substringFromIndex:(NSUInteger)from;
    //从0下标开始截取到指定位置的字符串
    - (NSString *)substringToIndex:(NSUInteger)to;
    //截取指定范围的字符串
    - (NSString *)substringWithRange:(NSRange)range;
    //截取字符串指定范围的字符
    - (void)getCharacters:(unichar *)buffer range:(NSRange)range;
    

    字符串比较

        将两个字符串进行计较,返回NSComparisonResult枚举结果
    
    比较结果:
    NSComparisonResult  说明
    NSOrderedAscending  升序 (左小右大)
    NSOrderedSame   相同 (内容相同)
    NSOrderedDescending     降序 (左大右小)
    比较选项:
    NSStringCompareOptions  说明
    NSCaseInsensitiveSearch     不区分大小写比较
    NSLiteralSearch     区分大小写比较
    NSBackwardsSearch   从字符串末尾开始搜索
    NSAnchoredSearch    搜索限制范围的字符串
    NSNumericSearch     按照字符串里的数字为依据,算出顺序
    NSDiacriticInsensitiveSearch    忽略 "-" 符号的比较
    NSWidthInsensitiveSearch    忽略字符串的长度,比较出结果
    NSForcedOrderingSearch  忽略不区分大小写比较的选项
    NSRegularExpressionSearch   只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:...方法
    
       //////////字符串比较//////////
    //1.比较
    - (NSComparisonResult)compare:(NSString *)string;
    //2.比较(指定字符串,条件)
    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
    //3.比较(指定字符串,条件,范围)
    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;
    //4.比较(指定字符串,条件,范围,本地化)
    - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange locale:(nullable id)locale;
    //5.比较(不区分大小写)
    - (NSComparisonResult)caseInsensitiveCompare:(NSString *)string;
    
    //6.本地化比较
    - (NSComparisonResult)localizedCompare:(NSString *)string;
    //7.本地化比较(不区分大小写)
    - (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string;
    //8.本地化比较(标准)
    - (NSComparisonResult)localizedStandardCompare:(NSString *)string;
    
    //9.判断两个字符串是否内容一致
    - (BOOL)isEqualToString:(NSString *)aString;
    

    字符串搜索

       //////////搜索基本//////////
    //1.是否包含前缀(以str开头)
    - (BOOL)hasPrefix:(NSString *)str;
    //2.是否包含后缀(以str结尾)
    - (BOOL)hasSuffix:(NSString *)str;
    //3.获取公共前缀
    - (NSString *)commonPrefixWithString:(NSString *)str options:(NSStringCompareOptions)mask;
    //4.是否包含字符串
    - (BOOL)containsString:(NSString *)str;
    //5.本地化是否包含字符串(不区分大小写)
    - (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str;
    //6.本地化是否包含字符串(标准)
    - (BOOL)localizedStandardContainsString:(NSString *)str;
    //7.本地化搜索字符串范围(标准)
    - (NSRange)localizedStandardRangeOfString:(NSString *)str;
    
       //////////搜索字符串//////////
    //8.搜索(指定字符串)
    - (NSRange)rangeOfString:(NSString *)searchString;
    //9.搜索(指定字符串,条件)
    - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask;
    //10.搜索(指定字符串,条件,范围)
    - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange;
    //11.搜索(指定字符串,条件,范围,本地化)
    - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)searchRange locale:(nullable NSLocale *)locale;
    
       //////////搜索字符集合//////////
    //12.搜索(指定字符集合)
    - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet;
    //13.搜索(指定字符集合,条件)
    - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask;
    //14.搜索(指定字符集合,条件,范围)
    - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask range:(NSRange)searchRange;
    
    //15.用字符串的字符编码指定索引查找位置
    - (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;
    //16.用字符串的字符编码指定区域段查找位置
    - (NSRange)rangeOfComposedCharacterSequencesForRange:(NSRange)range;
    

    字符串拼接

        //////////字符串拼接//////////
        NSString *string = @"1";
        NSString *appStr = @"2";
        NSString *resultStr1 = [string stringByAppendingString:appStr];
        NSString *resultStr2 = [string stringByAppendingFormat:@" + %@", appStr];
        
        NSLog(@"普通拼接:     %@", resultStr1);
        NSLog(@"格式化拼接:   %@", resultStr2);
        //输出:   普通拼接:     12
        //输出:   格式化拼接:   1 + 2
    

    字符串基本类型转换

        //////////字符串基本类型转换//////////
        NSString *numStr = @"87234.2345";
    
        NSLog(@"double型:        %f", numStr.doubleValue);
        NSLog(@"float型:         %f", numStr.floatValue);
        NSLog(@"int型:           %d", numStr.intValue);
        NSLog(@"NSInteger型:     %ld", numStr.integerValue);
        NSLog(@"long long型:     %lld", numStr.longLongValue);
        NSLog(@"BOOL型:          %d", numStr.boolValue);
        //输出:   double型:        87234.234500
        //输出:   float型:         87234.234375
        //输出:   int型:           87234
        //输出:   NSInteger型:     87234
        //输出:   long long型:     87234
        //输出:   BOOL型:          1
    
    字符串大小写转换
    
        //////////字符串大小写转换//////////
        NSString *string = @"string";
    
        NSLog(@"大写:         %@", string.uppercaseString);
        NSLog(@"小写:         %@", string.lowercaseString);
        NSLog(@"首字母大写:    %@", string.capitalizedString);
        //输出:   大写:         STRING
        //输出:   小写:         string
        //输出:   首字母大写:    String
    
    //本地化(大写)
    - (NSString *)uppercaseStringWithLocale:(nullable NSLocale *)locale; 
    //本地化(小写)
    - (NSString *)lowercaseStringWithLocale:(nullable NSLocale *)locale;
    //本地化(首字母大写)
    - (NSString *)capitalizedStringWithLocale:(nullable NSLocale *)locale; 
    

    字符串分行,分段

       //////////分行//////////
    //1.指定范围,分行取字符串
    - (void)getLineStart:(nullable NSUInteger *)startPtr end:(nullable NSUInteger *)lineEndPtr contentsEnd:(nullable NSUInteger *)contentsEndPtr forRange:(NSRange)range;
    //2.获取指定范围该行的范围
    - (NSRange)lineRangeForRange:(NSRange)range;
    
       //////////分段//////////
    //3.指定范围,分段取字符串
    - (void)getParagraphStart:(nullable NSUInteger *)startPtr end:(nullable NSUInteger *)parEndPtr contentsEnd:(nullable NSUInteger *)contentsEndPtr forRange:(NSRange)range;
    //4.获取指定范围该段落的范围
    - (NSRange)paragraphRangeForRange:(NSRange)range;
    
      //////////字符串分行,分段//////////
        NSString *string = @"123 456\nABC,DEF\nabc.def";
        //获取该行的范围(指定范围)
        NSRange range1 = [string lineRangeForRange:NSMakeRange(0, 10)];
        NSLog(@"%ld 行长度:     %ld", range1.location, range1.length);
        //输出:       0 行长度:     16
    
        //获取该段落范围(指定范围)
        NSRange range2 = [string paragraphRangeForRange:NSMakeRange(0, 3)];
        NSLog(@"%ld 段落长度:   %ld", range2.location, range2.length);
        //输出:       0 段落长度:   8
    

    字符串列举(按条件)

    列举选项:
    NSStringEnumerationOptions  说明
    NSStringEnumerationByLines  按行
    NSStringEnumerationByParagraphs     按段落
    NSStringEnumerationByComposedCharacterSequences     按字符顺序
    NSStringEnumerationByWords  按单词,字
    NSStringEnumerationBySentences  按句子
    NSStringEnumerationReverse  反向遍历
    NSStringEnumerationSubstringNotRequired     不需要子字符串
    NSStringEnumerationLocalized    本地化
    
       //////////字符串列举//////////    
       NSString *string = @"123456\nABCDEF\nabcdef
        //1.列举(按行)
       [string enumerateLinesUsingBlock:^(NSString * _Nonnull line, BOOL * _Nonnull stop) {
           NSLog(@"每行:   %@", line);
       }];
        //输出:    每行:   123456
        //输出:    每行:   ABCDEF
        //输出:    每行:   abcdef
        
     
        //2.列举(范围,条件)
        [string enumerateSubstringsInRange:NSMakeRange(5, 10) options:NSStringEnumerationByLines usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
           
            NSLog(@"%@", substring);
            NSLog(@"%ld   %ld", substringRange.location, substringRange.length);
            NSLog(@"%ld   %ld", enclosingRange.location, enclosingRange.length);
            
        }];
        //输出:   6
        //输出:   5 1
        //输出:   5 2
        
        //输出:   ABCDEF
        //输出:   7   6
        //输出:   7   7
        
        //输出:   a
        //输出:   14   1
        //输出:   14   1
    

    字符串编码和转换

        //////////字符串编码和转换//////////
        NSString *string = @"string";
    
        NSLog(@"最快编码值(枚举):      %lu", (unsigned long)string.fastestEncoding);
        NSLog(@"最小编码值(枚举):      %lu", (unsigned long)string.smallestEncoding);
        NSLog(@"UTF8编码值:           %s", string.UTF8String);
        //输出:     最快编码值(枚举):      1
        //输出:     最小编码值(枚举):      1
        //输出:     UTF8编码值:           string
    
    //1.选择编码,是否允许有损编码
    - (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)lossy;
    //2.选择编码
    - (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding;
    //3.判断是否可以无损编码
    - (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding;
    
    //4.C字符编码转换
    - (nullable __strong const char *)cStringUsingEncoding:(NSStringEncoding)encoding;
    //5.判读C字符转化是否可以成功
    - (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding;
    //6.指定缓存区转换
    - (BOOL)getBytes:(nullable void *)buffer maxLength:(NSUInteger)maxBufferCount usedLength:(nullable NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(nullable NSRangePointer)leftover;
    
    //7.对字符串进行编码时所需的最大字节数
    - (NSUInteger)maximumLengthOfBytesUsingEncoding:(NSStringEncoding)enc;
    //8.对字符串进行编码时所需的字节数
    - (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc;
    
    //9.可用字符串编码
    + (const NSStringEncoding *)availableStringEncodings; 
    //10.本地化编码名称
    + (NSString *)localizedNameOfStringEncoding:(NSStringEncoding)encoding;
    //11.默认C字符串编码
    + (NSStringEncoding)defaultCStringEncoding;
    

    字符串分割

    字符集合:
    NSCharacterSet  说明
    controlCharacterSet     控制符
    whitespaceCharacterSet  空格符
    whitespaceAndNewlineCharacterSet    空格换行符
    decimalDigitCharacterSet    小数
    letterCharacterSet  文字
    lowercaseLetterCharacterSet     小写字母
    uppercaseLetterCharacterSet     大写字母
    nonBaseCharacterSet     非基础
    alphanumericCharacterSet    数字字母
    decomposableCharacterSet    可分解
    illegalCharacterSet     非法
    punctuationCharacterSet     标点
    capitalizedLetterCharacterSet   大写
    symbolCharacterSet  符号
    newlineCharacterSet     换行符
    
        //////////字符串分割//////////
        NSString *string = @"A_B_c_D_E_F";
        
        //分割(指定字符串)
        NSArray *resultArr1 = [string componentsSeparatedByString:@"_"];
        NSLog(@"%@", resultArr1);
        //输出:   (A, B, c, D, E, F)
    
        //分割(指定字符集合)
        NSArray *resultArr2 = [string componentsSeparatedByCharactersInSet:[NSCharacterSet lowercaseLetterCharacterSet]];
        NSLog(@"%@", resultArr2);    
        //输出:   ("A_B_" , "_D_E_F")
    

    字符串操作(修剪,填充,折叠,替换)

        NSString *string = @"3EWRs a;af";
      
        //////////修剪//////////
        NSString *result1 = [string stringByTrimmingCharactersInSet:[NSCharacterSet lowercaseLetterCharacterSet]];
        NSLog(@"%@", result1);
        //输出:   3EWRs a;
        
        
        //////////填充//////////
        NSString *result2 = [string stringByPaddingToLength:20 withString:@"填充" startingAtIndex:1];
        NSLog(@"%@", result2);
        //输出:   3EWRs a;af充填充填充填充填充填
        
        
        //////////折叠//////////
        NSString *result3 = [string stringByFoldingWithOptions:NSNumericSearch locale:[NSLocale systemLocale]];
        NSLog(@"%@", result3);
        //输出:   3EWRs a;af
        
        
        //////////替换//////////
        //替换(指定字符串)
        NSString *result4 = [string stringByReplacingOccurrencesOfString:@" " withString:@"替换"];
        NSLog(@"%@", result4);
        //输出:   3EWRs替换a;af
        
    
        //替换(指定字符串,条件,范围)
        NSString *result5 = [string stringByReplacingOccurrencesOfString:@"a" withString:@"替换" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length - 2)];
        NSLog(@"%@", result5);
        //输出:   3EWRs 替换;af
        
        
        //替换(指定范围)
        NSString *result6 = [string stringByReplacingCharactersInRange:NSMakeRange(0, string.length) withString:@"替换"];
        NSLog(@"%@", result6);
        //输出:   替换
    

    字符串翻译

    翻译选项:
    翻译选择    说明
    NSStringTransformLatinToKatakana    拉丁->片假名
    NSStringTransformLatinToHiragana    拉丁->平假名
    NSStringTransformLatinToHangul  拉丁->韩语
    NSStringTransformLatinToArabic  拉丁->阿拉伯语
    NSStringTransformLatinToHebrew  拉丁->希伯来语
    NSStringTransformLatinToThai    拉丁->泰国
    NSStringTransformLatinToCyrillic    拉丁->西里尔字母
    NSStringTransformLatinToGreek   拉丁->希腊
    NSStringTransformToLatin    拉丁
    NSStringTransformMandarinToLatin    普通话->拉丁
    NSStringTransformHiraganaToKatakana     平假名->片假名
    NSStringTransformFullwidthToHalfwidth   全角->半角
    NSStringTransformToXMLHex   XML16进制
    NSStringTransformToUnicodeName  Unicode名
    NSStringTransformStripCombiningMarks    结合地带商标
    NSStringTransformStripDiacritics    带音符
    
        //////////字符串翻译//////////
        NSString *dalian = @"大连";
        NSString *result = [dalian stringByApplyingTransform:NSStringTransformMandarinToLatin reverse:NO];
        
        NSLog(@"%@", result);
        //输出:   dà lián
    

    字符串写入

        //////////字符串写入//////////
        //写入到指定路径,编码的文件中
        [string writeToFile:@"/Users/Desktop/LuisX.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
        
        //写入到指定URL,编码的文件中
        [string writeToURL:[NSURL URLWithString:@"file://LuisX.text"] atomically:YES encoding:NSUTF8StringEncoding error:nil];
    
    NSMutableString
    
        继承自NSString
        NSString中的方法在NSMutableString都可以使用
        NSMutableString是动态的字符串,可以动态的添加,修改,删除等
    
    可变字符串分配容量
    
        提前指定的容量,知识用于内存优化,实际大小可以大于设置的容量capacity
    
       //////////字符串分配容量//////////
        
       //1.初始化容量为Capacity大小的字符串  (需要手动释放内存)
       NSMutableString *mutableStr1 = [[NSMutableString alloc] initWithCapacity:20];
        
       //2.初始化容量为Capacity大小的字符串  (不需要手动释放内存)
       NSMutableString *mutableStr2 = [NSMutableString stringWithCapacity:20];
    
    可变字符串扩展方法
    
        NSMutableString *str = [NSMutableString stringWithString:@"string"];
        
        //////////插入//////////
        [str insertString:@"123" atIndex:2];
        NSLog(@"%@", str);
        //输出:   st123ring
        
        
        //////////删除//////////
        [str deleteCharactersInRange:NSMakeRange(2, 2)];
        NSLog(@"%@", str);
        //输出:   st3ring
        
        
        //////////拼接//////////
        [str appendString:@"456"];
        NSLog(@"%@", str);
        //输出:   st3ring456
        
        
        //////////格式化拼接//////////
        [str appendFormat:@"7 89"];
        NSLog(@"%@", str);
        //输出:   st3ring4567 89
        
        前言:喜欢记得点个心哦。
    
        //////////设置新字符串//////////
        [str setString:@"string"];
        NSLog(@"%@", str);
        //输出:   string
    
        //////////字符串替换//////////
        //1.指定范围替换
        [str1 replaceCharactersInRange:NSMakeRange(2, 2) withString:@"123"];
        NSLog(@"%@", str1);
        //输出:   st123ng
        
        
        //2.指定字符串,条件,范围替换
        [str1 replaceOccurrencesOfString:@"123" withString:@"--" options:NSRegularExpressionSearch range:NSMakeRange(0, str1.length)];
        NSLog(@"%@", str1);
        //输出:   st--ng
    

    更多文章🚀https://github.com/Luis-X/Blog/issues

    作者:LuisX
    链接:https://www.jianshu.com/p/d3f343b71cc2
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    相关文章

      网友评论

        本文标题:iOS NSString用法总结

        本文链接:https://www.haomeiwen.com/subject/btcrzftx.html