#import <Foundation/Foundation.h>程序员
int main(int argc, const char * argv[]) {api
@autoreleasepool {数组
栈区 - 由系统进行管理,程序员没法操控app
堆区 - 由程序员进行管理性能
NSString *str = @"abcdefg"; 将会存放在栈区,不须要主动释放内存.net
如下建立的都须要人工进行释放内存component
NSString *strA = [[NSString alloc]init];orm
strA = @"abcdefghijgk";内存
NSString *strB = [[NSString alloc]initWithString:strA];ci
c语言字符串转换为oc字符串
char *c = "abv";
NSString *strC = [[NSString alloc]initWithUTF8String:c];
如下建立的都会自动释放 原理是会在方法调用以后加上[xx autorelease]
NSString *strD = [NSString stringWithFormat:@"abcd%d",3];
NSString *strE = [NSString stringWithString:strD];
NSString *strF = [NSString stringWithUTF8String:c];
子串系列
[strB substringFromIndex:1]; 从某个位置到结束的全部字符串
[strB substringToIndex:1]; 从开始到某个位置的全部字符串
[strB substringWithRange:(NSRange){0,1}]; 截取某个范围内的字符串
[strB componentsSeparatedByString:@"/"]; 以 '/' 为标准进行字符串切割,而后切割出来的每一部分字符串放入到数组当中
比较系列
[strB isEqualToString:@"b"]; 判断两个字符串是否相等
NSComparisonResult cResult = [strB compare:strA]; 1 前者大 0二者相等 -1前者小
if(cResult == NSOrderedAscending)
NSLog(@"left<right");
else if(cResult == NSOrderedDescending)
NSLog(@"left>right");
else if(cResult == NSOrderedSame)
NSLog(@"left==right");
文件读取系列
NSString *path = @"/Users/whunf/Desktop/IT12/OCWithProperty/OCWithProperty/office资料.c";
NSString *strG = [[NSString alloc]initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
首字母大写,其他小写
str = @"HEllo woRld";
NSLog(@"原来的:%@,转换后的:%@",str,[str capitalizedString]);
是否包含
NSRange rng = [strB rangeOfString:@"fe"];
判断xx是否为空
if(rng.location == NSNotFound)
NSLog(@"not found");
将结构体包装成类,便于输出
NSLog(@"%@",NSStringFromRange(rng));
NSLog(@"%ld,%ld",rng.location,rng.length);
str = @"1";
类型转换
int intValue = [str intValue];
NSInteger integerValue = [str integerValue];
float floatValue = [str floatValue];
double doubleValue = [str doubleValue];
_Bool boolValue = [str boolValue];
long long longValue = [str longLongValue];
const char *cs = [str UTF8String];
字符串长度
NSInteger len = [str length];
转换成大写
str = @"b";
NSLog(@"%@",[str uppercaseString]);
转换成小写
str = @"B";
NSLog(@"%@",[str lowercaseString]);
判断是否以xx为开头
BOOL ret = [path hasPrefix:@"/Users"];
NSLog(@"%d",ret);
判断是否以xx为结尾
ret =[path hasSuffix:@".d"];
NSLog(@"%d",ret);
是否包含某个字符串
[str containsString:@“d"];
}
return 0;
}
上面讲解了,NSString的经常使用方法。
下面是NSMutableString的经常使用方法:
NSMutableString 可变
单词记忆
追加 append 插入insert 删除 delete remove
方位/下标 index 坐标 location 格式 Format
NSMutableString *mStr = [[NSMutableString alloc]init];
分配字符串大小,提高性能,但不是不能够超过这个范围。
NSMutableString *mString = [[NSMutableString alloc]initWithCapacity:10];
mStr = @"def"; 可变字符串不能进行直接赋值
NSLog(@"%@",mStr);
字符串添加系列
在某个位置插入字符串
[mStr insertString:@"abc" atIndex:0];
NSLog(@"%@",mStr);
在原有的字符串后面进行追加内容
[mStr appendString:@"def"];
NSLog(@"%@",mStr);
在原有的字符串后面格式化后追加内容
[mStr appendFormat:@"deg%d",3];
NSLog(@"%@",mStr);
删除某个范围内的字符
[mStr deleteCharactersInRange:(NSRange){0,3}];
NSLog(@"%@",mStr);
实例讲解:
1.建立一个字符串 "OCWith/OCWithProperty/office.c",利用string当中的子串截取方法,将每一个/以前的单词截取出来,放入到数组当中
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str =@"OCWith/OCWithProperty/office.c";
int loc = 0; 截取开始的坐标
int len = 0; 截取的长度
建立一个数组,用于储存截取出来的字符串
NSArray *arr = [NSArray array];
for (int i = 0; i<str.length; i++) {
获取当前位置的字符
if([str characterAtIndex:i] == '/')
{
获取range范围内的字符串
NSString *temp = [str substringWithRange:(NSRange){loc,len}];
将获取的字符串组合到数组中
arr = [arr arrayByAddingObject:temp];
loc = i+1; 截取开始的位置变化
len = -1; 长度重设
}
len++;
}
NSLog(@"%@",arr);
----------------------------------
经过自带的方法实现字符串截取
arr = [str componentsSeparatedByString:@"/"];
NSLog(@"%@",arr);
2.建立一个方法,用来获取文件名称和扩展名
获取文件名称
NSString *temp = [str substringWithRange:(NSRange){loc,len}];
NSString *fileName = @""; 用于储存文件名称
NSString *fileType = @""; 用于储存文件类型
loc = 0;
len = 0;
for (int i = 0; i<temp.length; i++) {
获取当前位置的字符
if([temp characterAtIndex:i] == '.')
{
获取range范围内的字符串
fileName = [temp substringWithRange:(NSRange){loc,len}];
loc = i+1;
len = -1;
}
len++;
}
fileType = [temp substringWithRange:(NSRange){loc,len}];
NSLog(@"文件名称:%@,文件类型:%@",fileName,fileType);
}
return 0;
}