Oc 字符串

来源:互联网 发布:大型网络3d手游2016年人气 编辑:程序博客网 时间:2024/06/05 09:24

判断字符串是否含有中文

+ (BOOL)checkIsChinese:(NSString *)string{    for (int i=0; i<string.length; i++)    {        unichar ch = [string characterAtIndex:i];        if (0x4E00 <= ch  && ch <= 0x9FA5)        {            return YES;        }    }    return NO;}

计算字符串长度
方法一

- (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];
  1. 可变字符串 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  0NSLiteralSearch 进行完全比较 区分大小写 (默认)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: 字符串的截取

012345NSString *str1 = @“abcdefgh”//从某一位开始截取后面的字符串NSString *str =[str1 substringFromIndex:2]; //从第二位开始截取字符串、【包含第二位】cdefgh//从开头截取到某一位NSString *str =[str1 substringToIndex:5];//从开头截取到第5位 [ 不包含 第五位]  abcde//截取一个范围 rangeNSRange 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