收集iOS-- NSString 字符串的使用

判断字符串是否含有中文

+ (BOOL)checkIsChinese:(NSString *)string
{
    for (int i=0; i

计算字符串长度
方法一

- (int)convertToInt:(NSString*)strtemp
{
    int strlength = 0;
    char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
    for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++)
    {
        if (*p)
        {
            p++;
            strlength++;
        }
        else
        {
            p++;
        }

    }
    return strlength;
}

方法二

-(NSUInteger) unicodeLengthOfString: (NSString *) text
{
    NSUInteger asciiLength = 0;
    for (NSUInteger i = 0; i < text.length; i++)
    {
        unichar uc = [text characterAtIndex: i];
        asciiLength += isascii(uc) ? 1 : 2;
    }
    return asciiLength;
}

iOS 获取汉字的拼音

+ (NSString *)transform:(NSString *)chinese
{    
    //将NSString装换成NSMutableString 
    NSMutableString *pinyin = [chinese mutableCopy];    
    //将汉字转换为拼音(带音标)    
    CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);    
    NSLog(@"%@", pinyin);    
    //去掉拼音的音标    
    CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);    
    NSLog(@"%@", pinyin);    
    //返回最近结果    
    return pinyin;
 }

1. 不可变字符串 NSStirng

用copy 的原因: 外界修改了字符串 不会影响里面。
@property(nonatomic ,copy) NSString * name ;

字符串反转

第一种:

- (NSString *)reverseWordsInString:(NSString *)str
{    
    NSMutableString *newString = [[NSMutableString alloc] initWithCapacity:str.length];
    for (NSInteger i = str.length - 1; i >= 0 ; i --)
    {
        unichar ch = [str characterAtIndex:i];       
        [newString appendFormat:@"%c", ch];    
    }    
     return newString;
}

//第二种:

- (NSString*)reverseWordsInString:(NSString*)str
{    
     NSMutableString *reverString = [NSMutableString stringWithCapacity:str.length];    
     [str enumerateSubstringsInRange:NSMakeRange(0, str.length) options:NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences  usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { 
          [reverString appendString:substring];                         
      }];    
     return reverString;
}

%@ 是输出OC字符串用的 C的字符串用%s
在OC 中 @符号代表对象的意思 也可以代表一个指针
不需要自己释放内存(系统帮我们释放内存)
NSString *str = @"Hello";

需要自己释放内存。

NSString *str =[[NSString alloc]init];
str =@"ios";
NSString *str =[[NSString alloc]initWithFormat:@“%d” %f %s ,10,10.1,”~~~”];

NSString *str =[[NSString stringWithString:str1];

格式化字符串

int a =10;
int b = 20;
NSString *str = [NSString stringWithFormat:@"@a= %d b=%d",a,b];

拼接字符串

NSString *str =[str1 stringByAppendingString :str2];

转化大小写

NSString *str1 =@"aJSHDdssFKJH";
NSString *str2 =[str1 lowercaseString]; //转换小写
NSString *str3 =[str1 uppercaseString]; //转换大写

判断有没有 前缀,后缀

NSString *str =@"www.baidu.com";
BOOL hasPreFix =[str hasPreFix:@"www"];//判断前缀
BOOL hasSuffix =[str hasSuffix:@"com"];//判断前缀

判断两个字符串是否相同

if ([str1 isEqualToString str2])

分割字符串

NSString *str =@"www.baidu.com";
NSArray *arrays =[str componentsSeparatedByString:@"."];
for(NSString *str in strArray)
{
    NSLog(@"str =%@",str);
}

将字符串拆分为每一个字符

for(int i=0; i<[str length];i++)
{
    NSLog(@"%c",[str characterAtIndex:i]);
}

//查找

NSString *str =@"ad df grdg awe sd ";
//查找指定字符串的位置
NSRange range1 = [str rangeOfString:@"ad"];
NSLog(@"range1.location:@ld  range1.length:%ld",range1.location
      ,range1.length);

替换

NSString *str =@"ad df grdg awe sd ";
//从第0位置开始 ,替换2个字符  替换为 你好
NSString *str2 =[str stringByReplacingCharactersInRange:NSMakeRange(0,2)withString:@"你好"];

读取文件:1.网络文件 2.本地文件

NSString *str =@"www.baidu.com"
//网络路径:
NSURL *httpURL = [NSURL URLWithString:str];
//本地路径
NSURL *fileURL = [NSURL fileURLWithPath:str];

//读取网络文件
NSString *httpStr =[NSString stringWithContentsOfURL:httpURL encoding:NSUTF8StringEncoding error:nil];
//读取本地文件
NSString *fileStr =[NSString  stringWithContentsOfFile:@"/Users/Visitor/Desktop/text.txt"encoding:NSUTF8StringEncoding error:nil];

//写入文件
NSString *str =@"hello world";
BOOL isOK = [str writeToFile:@"/Users/Visitor/Desktop/demo.txt" atomically:YES encoding:NSUTF8StringEncoding error :nil];

2. 可变字符串 NSMutableString

可变字符串是字符串的子类

NSMutableString *str = [[NSMutableString alloc] initWithCapicity:10];
//不能用 str = @"hello"; 会被提示错误。
[str setString :@"hello"];

1.追加字符串(只有可变字符串才能用)

[str appendingString @" world"];
int a =10;
[str appendFormat:@" - %d",a];

2.替换字符串(只有可变字符串才能用)

NSRange range = [str rangeOfString:@"world"];
[str replaceCharactersInRange:range withString:@" 你好!"];

插入字符串

[str insertString :@"A " atIndex:6]; //在第6位中插入字符串

删除字符串

NSRange range = [str rangeOfString:@"world"];
[str deleteCharactersInRange:range];

知识点1:比较两个字符串大小

正确方法 isEqualToString (区分大小写,返回YES NO) 比较接收方和当作参数传递来的字符串

    if(str1  isEqualToString str2 )
        {   
            NSLog(@“相等”);
            }else{
            NSLog(@“不相等”);
        }       

   compare  方法返回的结果有三种:
   str1 < str2     NSOrderedAscending  升序   123456     1
   str1 > str2  NSOrderedDescending  降序  654321    -1
   str1 == str2   NSOrderedSame  0

NSLiteralSearch 进行完全比较 区分大小写 (默认)
NSCaseInsensitiveSearch  不区分大小写
NSNumericSearch  字符个数
扩展:
 ( 比较原则: 取出每个字符的ASCII码值比较ASCII 码值大小)  
实例程序:NSString *str1 = @“abc”; //97
        NSString *str2 = @“bcd”; // 98
        //知识点: 如果不是一个类  后面不用加 * 号
        NSComparisonResult result =[ str1 compare:str2  options:NSCaseInsensitiveSearch];   
        //判断
        switch (result)
            case NSOrderedAscending:
              NSLog(@“str1>str2 升序”);
              break;
            case NSOrderedDescending:
              NSLog(@“str1>str2 降序”);
              break;
            case NSOrderedSame:
              NSLog(@“相同”);
              break;
           default;  
实例程序: 
        NSString *str1 = @“abc” //存放地址  常量区
        NSString *str3 = [NSString stringWithFormat :@“abc”]; // 存放地址  堆区
        //地址的比较
        //  “==”不能判断字符串是否相等   比的是地址  地址一样就相等,不管内容
        if(str1 ==str3){   //错误方法
            NSLog(@“相等”);
            }else{
            NSLog(@“不相等”);
        }       

知识点2:NSString 的前缀,后缀 检查和搜索

// [str hasPrefix:@“要检测的内容” ];     [str hasSuffix:@“要检测的内容”]

//如何检测这个字符串是否是一个网址
//检测一个字符串的前缀是否是以:            http://   或者    https:// 开头

   实例程序: 
   NSString *url = @“http://www.baidu.com”;
   if([url hasPrefix:@“http://”] | | [url hasPrefix:@“https://”]){
     NSLog(@“是一个网址”);
    }else{   NSLog(@“不是一个网址”);
}

知识点3: 字符串的查找

//查找某个字符串在另一个字符串中首次出现的位置   1   rangOfString   2
//range 结构体变量   NSRange 结构体别名
//range.location  表示字符串首次出现的位置
//range.length 字符串出现的长度 (实质上就是子字符串的长度)
   实例程序: 
            NSString *str1 = @“abcdefgh”;
            NSString *str2 = @“cd”;
            NSRange range = [str1 rangeOfString : str2 ];
            NSLog(@“%lu,%lu”,length.location,range.length);  
            //如果查找到了  返回 结果  2   2 
            //如果查找不到 ,  返回的信息 location 返回特别大的数(NSNotFound)  最大的long 整形的数, length 返回 0 

知识点4: 字符串的截取

                         012345
NSString *str1 = @“abcdefgh”
//从某一位开始截取后面的字符串
NSString *str =[str1 substringFromIndex:2]; //从第二位开始截取字符串、【包含第二位】cdefgh
//从开头截取到某一位
NSString *str =[str1 substringToIndex:5];//从开头截取到第5位 [ 不包含 第五位]  abcde
//截取一个范围 range
NSRange range ={3,4};
NSString *str = [str1 substringWithRange:range];  结果:defg



        for(MIOOrderInfo *order in self.subs)
        {
            //商品id
            NSString *pid = order.pid;
            //男.女 鞋
            NSString *poid =order.poid;
            //鞋码42
            NSString *pvid =order.pvid;
            //购买数量
            NSString *pquantity = order.pquantity;
            
            NSString *orderInfo =[NSString stringWithFormat:@"%@:%@:%@:%@",pid,poid,pvid,pquantity];
            NSLog(@"%@",orderInfo);
            
            str = [str stringByAppendingFormat:@";%@",orderInfo];
            
        }
        
        
        NSString *order_info =[str substringFromIndex:1];
        NSLog(@"str = %@",order_info);

3.分隔字符串

NSString*string =@"sdfsfsfsAdfsdf";

NSArray *array = [string componentsSeparatedByString:@"A"]; //从字符A中分隔成2个元素的数组
NSLog(@"array:%@",array); //结果是adfsfsfs和dfsdf

你可能感兴趣的:(收集iOS-- NSString 字符串的使用)