NSMutableString与NSString一些用法

来源:互联网 发布:百电通手机通话软件 编辑:程序博客网 时间:2024/05/18 17:05

消除字符串首尾空格

(1)系统去首尾空格方法,使用NSString中的str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格;


(2)替换的方法,使用NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@" " withString:@""];可以去掉空格,注意此时生成的strUrl是autorelease属性的,不要妄想对strUrl进行release操作。

中文URL编码(encode)解码(decode)

URL 加码 & 解码:

NSString* string1 = @"https://www.cloudsafe.com/文件夹";

    

NSString* string1 = @"https://www.cloudsafe.com/文件夹";

    

NSString* string2 = [string1stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSStringstring3 = [string2stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    

NSString* string4 = [string2stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString* string5 = [string3stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    

NSString* string6 = [string4stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString* string7 = [string5stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    

输出结果: string5 & 6 重复编码encode

 

string1:https://www.cloudsafe.com/文件夹

 

string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9

string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9

 

string4:https://www.cloudsafe.com/文件夹

string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9

 

string6:https://www.cloudsafe.com/文件夹

string7:https://www.cloudsafe.com/文件夹


中文网址路径转换URLEncode

[NSURL URLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题.

   方法1:

NSString* encodedString = [urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];


   方法2:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);


   这两种方法当urlString里含有中文时URL编码是正确的,但是如果其中含有已转义的%等符号时,又会再次转义而导致错误.

   

   查看方法2参数说明:

CFStringRefCFURLCreateStringByAddingPercentEscapes(CFAllocatorRefallocator, CFStringRef originalString, CFStringRefcharactersToLeaveUnescaped, CFStringReflegalURLCharactersToBeEscaped, CFStringEncoding encoding);


因此做出修改,写出方法:

    NSString *encodedString = (NSString *)

    CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

                                            (CFStringRef)urlString,

                                            (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",

                                            NULL,

                                            kCFStringEncodingUTF8);



如果在所有的类里都要用到这个方法,可以写成category,然后在头文件import "NSString+URL.h" 即可调用.


NSString+URL.h  文件

[html] view plaincopy
  1. @interface NSString (URL)  
  2. - (NSString *)URLEncodedString;  
  3. @end  


NSString+URL.m  文件

[cpp] view plaincopy
  1. #import "NSString+URL.h"  
  2.   
  3. @implementation NSString (URL)  
  4.   
  5. - (NSString *)URLEncodedString  
  6. {  
  7.     NSString *encodedString = (NSString *)  
  8.     CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  
  9.                                             (CFStringRef)self,  
  10.                                             (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",  
  11.                                             NULL,  
  12.                                             kCFStringEncodingUTF8);  
  13.     return encodedString;  
  14. }  
  15. @end  

调用方法:

    NSString *encodedString = [urlString URLEncodedString];

将字符串转换为日期时间格式

1、如何如何将一个字符串如“ 20110826134106”装化为任意的日期时间格式,下面列举两种类型:
   NSString* string = @"20110826134106";
    NSDateFormatter *inputFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [inputFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
    [inputFormatter setDateFormat:@"yyyyMMddHHmmss"];
    NSDate* inputDate = [inputFormatter dateFromString:string];
    NSLog(@"date = %@", inputDate);
    
    NSDateFormatter *outputFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [outputFormatter setLocale:[NSLocale currentLocale]];
    [outputFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];
    NSString *str = [outputFormatter stringFromDate:inputDate];
    NSLog(@"testDate:%@", str);
两次打印的结果为:
    date = 2011-08-26 05:41:06 +0000
    testDate:2011年08月26日 13时41分06秒

说明:上面的时间是美国时间,下面的没有设置

   NSString* string = @"Wed, 05 May 2011 10:50:00 +0800";
    NSDateFormatter *inputFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [inputFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
    [inputFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"];
    NSDate* inputDate = [inputFormatter dateFromString:string];
    NSLog(@"date = %@", inputDate);
PS:http://www.wangdg.com/?p=207


2、以前一直为这个事情纠结,无奈只能拼接字符串:

NSString *str=@"20120403000000";

NSString *dateStr=[NSString stringWithFormat:@"有效期至:%@年%@月%@日",
                           [str substringWithRange:NSMakeRange(0, 4)],
                           [str substringWithRange:NSMakeRange(4, 2)],
                           [str substringWithRange:NSMakeRange(6, 2)]];
这个方法笨,可是没办法,查了好多资料,都没明白,今天突然明白了,呵呵,只要把那个[inputFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss Z"];@“”里面的格式转化为你字符串的格式一切就OK了,不知道我说明白了吗
3、iOS-NSDateFormatter 格式说明:

G: 公元时代,例如AD公元
    yy: 年的后2位
    yyyy: 完整年
    MM: 月,显示为1-12
    MMM: 月,显示为英文月份简写,如 Jan
    MMMM: 月,显示为英文月份全称,如 Janualy
    dd: 日,2位数表示,如02
    d: 日,1-2位显示,如 2
    EEE: 简写星期几,如Sun
    EEEE: 全写星期几,如Sunday
    aa: 上下午,AM/PM
    H: 时,24小时制,0-23
    K:时,12小时制,0-11
    m: 分,1-2位
    mm: 分,2位
    s: 秒,1-2位
    ss: 秒,2位
    S: 毫秒

常用日期结构:
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
MM dd yyyy 











+(id)stringWithContentsOfFile:path encoding:enc err创建一个新字符串并将其设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误+(id)stringWithContentsOfURL:url encoding:enc err创建一个新字符串并将其设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误+(id)string创建一个新的空字符串+(id)stringWithString:nsstring创建一个新字符串,将其内容设置为 nsstring 内容-(id)initWithString:nsstring将字符串内容设置为 nsstring 内容-(id)initWithContentsOfFile:path encoding:enc error:err将字符串设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误-(id)initWithContentsOfURL:url encoding:enc error:err将字符串设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误-(UNSigned int)length返回字符串中字符数目-(unichar)characterAtindex:i返回索引i 所在UniCode 字符-(NSString*)substringFromIndex:i返回从索引 i 开始到结尾的子字符串-(NSString*)substringWithRange:range根据指定范围返回子字符串-(NSString*)substringToIndex:i返回从字符串开始到 索引 i 的子字符串-(NSComparator*)caseInsensitiveCompare:nsstring比较两个字符串大小,忽略大小写-(NSComparator*)compare:nsstring比较两个字符串大小-(BOOL)hasPrefix:nsstring测试字符串是否以 nsstring 开始-(BOOL)hasSuffix:nsstring测试字符串是否以 nsstring 结尾-(BOOL)isEqualToString:nsstring测试两个字符串是否相等-(NSString*)capitalizedString返回字符串,串中的每个单词的首字母大写,其余字母小写-(NSString*)lowercaseString返回转换为小写的字符串-(NSString*)uppercaseString返回转换为大写的字符串-(const char*)UTF8String返回UTF8编码格式的字符串-(double)doubleValue返回转换为double 类型的字符串-(float)floatValue返回转换为 float 类型的字符串-(NSInteger)integerValue返回转换为 NSInteger 类型的新字符串-(int)intvalue返回转换为 int 的字符串NSString 常用方法总结
+(id)stringWithContentsOfFile:path encoding:enc err创建一个新字符串并将其设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误+(id)stringWithContentsOfURL:url encoding:enc err创建一个新字符串并将其设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误+(id)string创建一个新的空字符串+(id)stringWithString:nsstring创建一个新字符串,将其内容设置为 nsstring 内容-(id)initWithString:nsstring将字符串内容设置为 nsstring 内容-(id)initWithContentsOfFile:path encoding:enc error:err将字符串设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误-(id)initWithContentsOfURL:url encoding:enc error:err将字符串设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误-(UNSigned int)length返回字符串中字符数目-(unichar)characterAtindex:i返回索引i 所在UniCode 字符-(NSString*)substringFromIndex:i返回从索引 i 开始到结尾的子字符串-(NSString*)substringWithRange:range根据指定范围返回子字符串-(NSString*)substringToIndex:i返回从字符串开始到 索引 i 的子字符串-(NSComparator*)caseInsensitiveCompare:nsstring比较两个字符串大小,忽略大小写-(NSComparator*)compare:nsstring比较两个字符串大小-(BOOL)hasPrefix:nsstring测试字符串是否以 nsstring 开始-(BOOL)hasSuffix:nsstring测试字符串是否以 nsstring 结尾-(BOOL)isEqualToString:nsstring测试两个字符串是否相等-(NSString*)capitalizedString返回字符串,串中的每个单词的首字母大写,其余字母小写-(NSString*)lowercaseString返回转换为小写的字符串-(NSString*)uppercaseString返回转换为大写的字符串-(const char*)UTF8String返回UTF8编码格式的字符串-(double)doubleValue返回转换为double 类型的字符串-(float)floatValue返回转换为 float 类型的字符串-(NSInteger)integerValue返回转换为 NSInteger 类型的新字符串-(int)intvalue返回转换为 int 的字符串NSString 常用方法总结+(id)stringWithContentsOfFile:path encoding:enc err创建一个新字符串并将其设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误+(id)stringWithContentsOfURL:url encoding:enc err创建一个新字符串并将其设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误+(id)string创建一个新的空字符串+(id)stringWithString:nsstring创建一个新字符串,将其内容设置为 nsstring 内容-(id)initWithString:nsstring将字符串内容设置为 nsstring 内容-(id)initWithContentsOfFile:path encoding:enc error:err将字符串设置为 path 指定文件的内容,使用字符编码 enc,在err 上返回错误-(id)initWithContentsOfURL:url encoding:enc error:err将字符串设置为 url 所指向的内容,使用字符编码 enc,在err 上返回错误-(UNSigned int)length返回字符串中字符数目-(unichar)characterAtindex:i返回索引i 所在UniCode 字符-(NSString*)substringFromIndex:i返回从索引 i 开始到结尾的子字符串-(NSString*)substringWithRange:range根据指定范围返回子字符串-(NSString*)substringToIndex:i返回从字符串开始到 索引 i 的子字符串-(NSComparator*)caseInsensitiveCompare:nsstring比较两个字符串大小,忽略大小写-(NSComparator*)compare:nsstring比较两个字符串大小-(BOOL)hasPrefix:nsstring测试字符串是否以 nsstring 开始-(BOOL)hasSuffix:nsstring测试字符串是否以 nsstring 结尾-(BOOL)isEqualToString:nsstring测试两个字符串是否相等-(NSString*)capitalizedString返回字符串,串中的每个单词的首字母大写,其余字母小写-(NSString*)lowercaseString返回转换为小写的字符串-(NSString*)uppercaseString返回转换为大写的字符串-(const char*)UTF8String返回UTF8编码格式的字符串-(double)doubleValue返回转换为double 类型的字符串-(float)floatValue返回转换为 float 类型的字符串-(NSInteger)integerValue返回转换为 NSInteger 类型的新字符串-(int)intvalue返回转换为 int 的字符串
NSMutableString 可修改字符串常用方法+(id)stringWithCapacity:size创建一个字符串,容量为size大小-(id)initWithCapacity:size初始化一个字符串,容量为size-(void)setString:nsstring将字符串设置为 nsstring-(void)appendString:nsstring在字符串末尾追加字符串 nsstring-(void)deleteCharatersInRange:range删除指定range 中的字符-(void)insertString:nsstring atIndex:i以索引 i 为起始位置插入 nsstring-(void)replaceCharatersInRange;range withString:nsstring使用 nsstring 替换 range 指定的字符-(void)replaceOccurrencesOfString:nsstring withString:nsstring2 options:opts range:range根据选项 opts ,使用指定 range 中的nsstring2 替换所有的 nsstring
0 0
原创粉丝点击