20-NSString-foundation



首先理解内存空间分配     NSString * str =  @“456"
str为 NSString *指针
 栈空间        str—>( ffc2  ffc3) (NSString结构体类型指针存堆中地址)


  (ffc2    ffc3)两个字节          4
  (ffc3    ffc4)          5
    (ffc5    ffc6)          6
    (ffc7    ffc8)         nil

&str= ffc2    ffc3
*str=567  修改str指向内存空间的内容



NSString的创建
l创建常量字符

NSString *string = @"This is a String!";

l通过字符串创建字符串

[[NSString alloc] initWithString:@"This is a String!"];

// 或者[[NSString alloc] initWithFormat:@"My age is %i", 17];

l用标准c创建字符

char *cString = "这是一串中文";

[[NSString alloc] initWithCString:cString   encoding:NSUTF8StringEncoding];

或者 [[NSString alloc] initWithUTF8String:cString];

// 字符串编码可以在NSString.h中查阅

l从文件中读取

NSError *error = nil;  // 用来记录错误信息

NSString *path = @"/Users/apple/Desktop/test.txt"; // 文件路径

NSString *string = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

if (error) /文件读取失败

   /"通俗易懂"的错误信息

   NSString *desc = [error localizedDescription];

   NSLog(@"\n文件读取失败,错误信息如下:\n%@", desc);

else // 文件读取成功

   NSLog(@"\n文件读取成功,内容如下:\n%@", string);

}

// 将中文字符编码转为NSStringEncoding格式的编码

// NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(

kCFStringEncodingGB_18030_2000);

l从一个Url读取字符串

NSError *error = nil;  // 用来记录错误信息

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

NSString *string = [[NSString alloc] initWithContentsOfURL:url

  encoding:NSUTF8StringEncoding error:nil];

if (error) { // 读取失败

   // 得到"通俗易懂"的错误信息

   NSString *desc = [error localizedDescription];

   NSLog(@“\n读取失败,错误信息如下:\n%@", desc);

} else // 读取成功

   NSLog(@“\n读取成功,内容如下:\n%@", string);

}

还有一些静态方法(都是autorelease)

l[NSString stringWithUTF8String:"12345"];
l[NSString stringWithFormat:@"My age is %i", 27];
l[NSString stringWithCString:"12345"   encoding:NSUTF8StringEncoding];
lNSString *path = @"/Users/apple/Desktop/test.txt”;

[NSString stringWithContentsOfFile:path   encoding:NSUTF8StringEncoding error:nil];

lNSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

NSString *string = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];


NSString的导出
l将字符串写入文件

NSString *string = @"我是字符串";

NSString *path = @"/Users/apple/Desktop/abc.txt";

[string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

或者

NSString *urlPath = @"file:///Users/apple/Desktop/abc.txt";

NSURL *url = [NSURL URLWithString:urlPath];

[string writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

l- (NSString *)uppercaseString

全部转为大写字母

l- (NSString *)lowercaseString

全部转为小写字母

l- (NSString *)capitalizedString

首字母变大写,其他字母都变小写


NSString的比较
l- (BOOL)isEqualToString:(NSString *)aString

比较两个字符串的内容是否相同,相同就返回YES,不同则返回NO

l- (NSComparisonResult)compare:(NSString *)string

逐个字符地进行比较,返回NSComparisonResult来显示比较结果.

NSComparisonResult是一个枚举,有3个值:

NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending

如果左侧大于右侧,返回NSOrderedDescending,

如果左侧小于右侧,返回NSOrderedAscending,

否则返回NSOrderedSame

l(NSComparisonResult)caseInsensitiveCompare:(NSString *)string

忽略大小写进行比较,返回值与compare:一致


NSString搜索字符串

l- (BOOL)hasPrefix:(NSString *)aString

是否以aString开头

l- (BOOL)hasSuffix:(NSString *)aString

是否以aString结尾

l- (NSRange)rangeOfString:(NSString *)aString

检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRangelocation-1,length0

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

可以传递一个mask参数,改变搜索方式

比如NSStringCompareOptionsNSBackwardsSearch表示从尾部开始搜索

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange

还可以用searchRange指定搜索范围


NSString 的截取

l- (NSString *)substringFromIndex:(NSUInteger)from

指定位置from开始(包括指定位置的字)到尾部

l- (NSString *)substringToIndex:(NSUInteger)to

从字符串的开头一直截取到指定的位置to但不包括该位置的字符

l- (NSString *)substringWithRange:(NSRange)range

按照所给出的NSRange字符串中截取子串

l- (NSArray *)componentsSeparatedByString:(NSString *)separator

separator为分隔符截取子串返回一个装着所有子串的集合NSArray


NSString与路径
l+ (NSString *)pathWithComponents:(NSArray *)components

components中的字符串按顺序拼成一个路径

l- (NSArray *)pathComponents

将一个路径分解成一个装着每一个目录的NSArray

l- (BOOL)isAbsolutePath

是否为绝对路径

l- (NSString *)lastPathComponent

获得最后一个目录

l- (NSString *)stringByDeletingLastPathComponent

删除最后一个目录 

l- (NSString *)stringByAppendingPathComponent:(NSString *)str

在路径的后面拼接一个目录


NSString与拓展名
l- (NSString *)pathExtension

获得拓展名

l- (NSString *)stringByDeletingPathExtension

删除尾部的拓展名

l- (NSString *)stringByAppendingPathExtension:(NSString *)str

在尾部添加一个拓展名


NSString的其他用法

l- (NSUInteger)length

返回字符串的长度(字符个数) 

l- (unichar)characterAtIndex:(NSUInteger)index

返回index位置对应的字符

l(double)doubleValue
l- (float)floatValue
l- (int)intValue
l(char *)UTF8String

转为C语言中的字符串

===================================

NSMutableString

lNSString是不可变的,不能删除字符或者添加字符NSString有一个子类NSMutableString,称为可变字符串
l创建可变字符串的常用方法
u- (id)initWithCapacity:(NSUInteger)capacity
u(id)stringWithCapacity:(NSUInteger)capacity

capacity只是一个最优值,字符串的大小并不仅限于所提供的容量,设置了capacity,可以预分配一块内存来存储它,操作速度会快很多

l当然,也可以使用创建NSString的方法来创建NSMutableString,因为NSMutableStringNSString的子类,NSString能用的方法,NSMutableString都能使用



NSMutableString的常用处理
l- (void)setString:(NSString *)aString

初始化完毕后可以使用此方法设置字符串的内容

l(void)appendString:(NSString *)aString
l- (void)appendFormat:(NSString *)format, ...

这两个方法都是在尾部拼接一段字符串

l- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString

range位置的字符串替换为aString

l- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc

loc这个位置插入aString(aString的起始位置是就loc)

l- (void)deleteCharactersInRange:(NSRange)range

删除range这个范围的字符串(经常跟rangeOfString:一起使用删除特定的字符串)

==================================



首先理解内存空间分配     NSString * str =  @“456"
str为 NSString *指针
 栈空间        str—>( ffc2  ffc3) (NSString结构体类型指针存堆中地址)


  (ffc2    ffc3)两个字节          4
  (ffc3    ffc4)          5
    (ffc5    ffc6)          6
    (ffc7    ffc8)         nil

&str= ffc2    ffc3
*str=567  修改str指向内存空间的内容



NSString的创建
l创建常量字符

NSString *string = @"This is a String!";

l通过字符串创建字符串

[[NSString alloc] initWithString:@"This is a String!"];

// 或者[[NSString alloc] initWithFormat:@"My age is %i", 17];

l用标准c创建字符

char *cString = "这是一串中文";

[[NSString alloc] initWithCString:cString   encoding:NSUTF8StringEncoding];

或者 [[NSString alloc] initWithUTF8String:cString];

// 字符串编码可以在NSString.h中查阅

l从文件中读取

NSError *error = nil;  // 用来记录错误信息

NSString *path = @"/Users/apple/Desktop/test.txt"; // 文件路径

NSString *string = [[NSString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

if (error) /文件读取失败

   /"通俗易懂"的错误信息

   NSString *desc = [error localizedDescription];

   NSLog(@"\n文件读取失败,错误信息如下:\n%@", desc);

else // 文件读取成功

   NSLog(@"\n文件读取成功,内容如下:\n%@", string);

}

// 将中文字符编码转为NSStringEncoding格式的编码

// NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(

kCFStringEncodingGB_18030_2000);

l从一个Url读取字符串

NSError *error = nil;  // 用来记录错误信息

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

NSString *string = [[NSString alloc] initWithContentsOfURL:url

  encoding:NSUTF8StringEncoding error:nil];

if (error) { // 读取失败

   // 得到"通俗易懂"的错误信息

   NSString *desc = [error localizedDescription];

   NSLog(@“\n读取失败,错误信息如下:\n%@", desc);

} else // 读取成功

   NSLog(@“\n读取成功,内容如下:\n%@", string);

}

还有一些静态方法(都是autorelease)

l[NSString stringWithUTF8String:"12345"];
l[NSString stringWithFormat:@"My age is %i", 27];
l[NSString stringWithCString:"12345"   encoding:NSUTF8StringEncoding];
lNSString *path = @"/Users/apple/Desktop/test.txt”;

[NSString stringWithContentsOfFile:path   encoding:NSUTF8StringEncoding error:nil];

lNSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

NSString *string = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];


NSString的导出
l将字符串写入文件

NSString *string = @"我是字符串";

NSString *path = @"/Users/apple/Desktop/abc.txt";

[string writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

或者

NSString *urlPath = @"file:///Users/apple/Desktop/abc.txt";

NSURL *url = [NSURL URLWithString:urlPath];

[string writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

l- (NSString *)uppercaseString

全部转为大写字母

l- (NSString *)lowercaseString

全部转为小写字母

l- (NSString *)capitalizedString

首字母变大写,其他字母都变小写


NSString的比较
l- (BOOL)isEqualToString:(NSString *)aString

比较两个字符串的内容是否相同,相同就返回YES,不同则返回NO

l- (NSComparisonResult)compare:(NSString *)string

逐个字符地进行比较,返回NSComparisonResult来显示比较结果.

NSComparisonResult是一个枚举,有3个值:

NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending

如果左侧大于右侧,返回NSOrderedDescending,

如果左侧小于右侧,返回NSOrderedAscending,

否则返回NSOrderedSame

l(NSComparisonResult)caseInsensitiveCompare:(NSString *)string

忽略大小写进行比较,返回值与compare:一致


NSString搜索字符串

l- (BOOL)hasPrefix:(NSString *)aString

是否以aString开头

l- (BOOL)hasSuffix:(NSString *)aString

是否以aString结尾

l- (NSRange)rangeOfString:(NSString *)aString

检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRangelocation-1,length0

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

可以传递一个mask参数,改变搜索方式

比如NSStringCompareOptionsNSBackwardsSearch表示从尾部开始搜索

l- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange

还可以用searchRange指定搜索范围


NSString 的截取

l- (NSString *)substringFromIndex:(NSUInteger)from

指定位置from开始(包括指定位置的字)到尾部

l- (NSString *)substringToIndex:(NSUInteger)to

从字符串的开头一直截取到指定的位置to但不包括该位置的字符

l- (NSString *)substringWithRange:(NSRange)range

按照所给出的NSRange字符串中截取子串

l- (NSArray *)componentsSeparatedByString:(NSString *)separator

separator为分隔符截取子串返回一个装着所有子串的集合NSArray


NSString与路径
l+ (NSString *)pathWithComponents:(NSArray *)components

components中的字符串按顺序拼成一个路径

l- (NSArray *)pathComponents

将一个路径分解成一个装着每一个目录的NSArray

l- (BOOL)isAbsolutePath

是否为绝对路径

l- (NSString *)lastPathComponent

获得最后一个目录

l- (NSString *)stringByDeletingLastPathComponent

删除最后一个目录 

l- (NSString *)stringByAppendingPathComponent:(NSString *)str

在路径的后面拼接一个目录


NSString与拓展名
l- (NSString *)pathExtension

获得拓展名

l- (NSString *)stringByDeletingPathExtension

删除尾部的拓展名

l- (NSString *)stringByAppendingPathExtension:(NSString *)str

在尾部添加一个拓展名


NSString的其他用法

l- (NSUInteger)length

返回字符串的长度(字符个数) 

l- (unichar)characterAtIndex:(NSUInteger)index

返回index位置对应的字符

l(double)doubleValue
l- (float)floatValue
l- (int)intValue
l(char *)UTF8String

转为C语言中的字符串

===================================

NSMutableString

lNSString是不可变的,不能删除字符或者添加字符NSString有一个子类NSMutableString,称为可变字符串
l创建可变字符串的常用方法
u- (id)initWithCapacity:(NSUInteger)capacity
u(id)stringWithCapacity:(NSUInteger)capacity

capacity只是一个最优值,字符串的大小并不仅限于所提供的容量,设置了capacity,可以预分配一块内存来存储它,操作速度会快很多

l当然,也可以使用创建NSString的方法来创建NSMutableString,因为NSMutableStringNSString的子类,NSString能用的方法,NSMutableString都能使用



NSMutableString的常用处理
l- (void)setString:(NSString *)aString

初始化完毕后可以使用此方法设置字符串的内容

l(void)appendString:(NSString *)aString
l- (void)appendFormat:(NSString *)format, ...

这两个方法都是在尾部拼接一段字符串

l- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString

range位置的字符串替换为aString

l- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc

loc这个位置插入aString(aString的起始位置是就loc)

l- (void)deleteCharactersInRange:(NSRange)range

删除range这个范围的字符串(经常跟rangeOfString:一起使用删除特定的字符串)

==================================



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值