1.NSData转NSString
NSString* string= [[NSString alloc] initWithData:aData encoding:NSUTF8StringEncoding];
//encoding: The encoding used by data.
//NSString转NSData
NSData* data = [string dataUsingEncoding: NSUTF8StringEncoding];
秘诀:NSString都是作为方法的主体。
2.NSString 有一些方便组合成文件名,路径等的方法。
[request url]
absoluteString:http://121.8.165.195:8090/ecwapoa/css/login.css
path:/ecwapoa/css/login.css
lastPathComponent:login.css
pathExtension:css
3.格式化
%:@"%%";
%s表示c风格字符串;
%0.2f 表示带两位小数;
float转百分比:[ NSString stringWithFormat:@"%.0f%%",float1 *100 ];
%d表示符号整数
%u表示无符号整数
%x, %X 二进制整数
%o 八进制整数
使用NSString 的格式化大全
http://blog.csdn.net/remote_roamer/article/details/7166043
四舍五入
float oldValue = 1.051;
float newValue = [[NSString stringWithFormat:@"%.1f", oldValue] floatValue];
newValue 结果为 1.1。
使用NSString 的格式化大全
http://blog.csdn.net/remote_roamer/article/details/7166043
4.作为属性
规范上NSString做属性都是写成copy的,它在语义上是不可变的。
如果把NSMutableString赋给retain的NSString,它的内容就可能会变化了。
5. NSScanner
is an abstract superclass of a class cluster that declares the programmatic interface for an object that scans values from an NSString object.
7.去空格
str=[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
8.计算长度,按汉字2,字母数字1算。
两个方法: CFStringEncodingExt.h头文件中 http://www.cnblogs.com/luyinghuai/archive/2011/08/18/2145031.html
(1). NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
int length=[textView.text lengthOfBytesUsingEncoding:enc];
(2). -(int)charNumber:(NSString*)strtemp
{
int strlength = 0;
char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
int lengthByUnicode=[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding];
for (int i=0 ; i<lengthByUnicode ;i++)
{
if (*p)
{
p++;
strlength++;
}
else
{
p++;
}
}
return strlength;
}
9. 获取字符串(NSString)的宽度
Declared in UIStringDrawing.h
http://hi.baidu.com/jis2007/blog/item/62b47dc2e7cab63be4dd3bff.html
15.CGRect NSString
CGRectFromNSString
16.字符串常量
Cocoa中对于大量的常量字符串,系统保存了它们的引用。例如[@"123" retainCount]会发现返回一个很大的数。这样减少了对于这种经常使用的常量的内存占用。
[[NSString alloc] initWithString:@"123"]返回的对象就是@"123",initWithString这个函数返回的就是@"123",
查看 NSStrin* str =[[NSString alloc] initWithString:@"123"]; str=@"123";发现两个str指针地址相同。并发现NSLog(@"str retainCount:%u",[str retainCount]);值总是4294967295,即0xFFFFFFFF。
17. 下面两段方法作用都是对有汉字的字符串编码
(1)NSString* str=@"汉字";
str=[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
//stringByAddingPercentEscapesUsingEncoding 会把, [0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,之外的字符,做编码。stringByAddingPercentEscapesUsingEncoding可以用在整个url上。
测试被编码的字符包括 =%&; 等,%被编码为%25
(2)- (NSString *)urlEncode
{
NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)self, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);
return [result autorelease];
}
//上面urlEncode函数中,:/?#[]@!$&’()*+,;=,这些符号也都做了编码;它比stringByAddingPercentEscapesUsingEncoding多做了,$+!*(),,字符的编码,urlEncode这个函数只能用在参数值上,不能用在整个url上。
测试被编码的字符包括 %等,%被编码为%25
//解码
- (NSString *)urlDecode
{
NSString *decodeString = [self stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
return decodeString;
}
18.NSAttributedString,NSMutableAttributedString 让Label显示富文本
NSAttributedString可以使一个字符串显示的多样化,ios对它支持的不如mac好。
首先导入CoreText.framework,#import<CoreText/CoreText.h>