判断字符串是否含有中文
+ (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