NSMutableString与NSString一些用法

原创 2015年07月10日 09:36:35

消除字符串首尾空格

(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  文件

  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);


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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

NSString+NSMutableString+NSValue+NSAraay用法汇总(3)

@"b",@"a",@"e",@"d",@"c",@"f",@"h",@"g",nil];         NSLog(@"oldArray:%@",oldArray);     NSEnumer...

有必要再转载一此资料给童鞋们NSString+NSMutableString+NSValue+NSAraay用法汇总

默认分类   2009-11-25 11:47   阅读18   评论0    字号: 大  中  小  /********************************************...

14.NSString/NSMutableString用法总结

NSString总结NSString总结 初始化与赋值 数据类型转换成NSString 截取和处理字符串 文件读写 字符串判断 字符串字母转换 NSMutableString总结初始化与赋值 /...

NSString+NSMutableString+NSValue+NSAraay用法汇总(2)

//扩展路径     NSString *Path = @"~/NSData.txt";     NSString *absolutePath = [Path stringByExpandin...

NSString+NSMutableString+NSValue+NSAraay用法汇总(很不错的哦)

http://www.cocoachina.com/bbs/read.php?tid-30464.html //一、NSString       /*----------------创建字符串的方法-...
  • NULLCN
  • NULLCN
  • 2011年03月08日 17:01
  • 486

NSString+NSMutableString+NSValue+NSAraay用法汇总

//一、NSString       /*----------------创建字符串的方法----------------*/      //1、创建常量字符串。    NSString *astri...

NSString+NSMutableString+NSValue+NSAraay常见用法总结

//一、NSString /*—————-创建字符串的方法—————-*/ //1、创建常量字符串。 NSString *astring = @”This is a String!”; ...

iOS-OC-NSString和NSMutableString用法大全

// 创建NSString的常用方法 + (void)NSStringCreateMethod { // 字符串常量 类似于 char *p = "Hello world"; // N...

NSString+NSMutableString+NSValue+NSAraay用法汇总1

//一、NSString       /*----------------创建字符串的方法----------------*/    //1、创建常量字符串。    NSString *astring...

NSString+NSMutableString+NSValue+NSAraay用法汇总 [cpp] view plaincopy /*******************************

NSString+NSMutableString+NSValue+NSAraay用法汇总   [cpp] view plaincopy /*******...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSMutableString与NSString一些用法
举报原因:
原因补充:

(最多只允许输入30个字)