☰
NSString,NSScanner,NSData,NSAttributedString
2026/10/7 20:47:25 网站建设 项目流程

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

见:官方实例“The Element”—— AtomicElementTileView.m 83行
UIFont * font = [UIFont system...];
CGSize stringSize = [aString sizeWithFont:font]; 规定字符字体获取字符串Size,再获取其宽度。
CGFloat width = stringSize.width;

10.CFStringRef,NSString互转
CFStringRef aCFString = (CFStringRef)aNSString;
NSString *aNSString = (NSString *)aCFString;

11.比较
isEqualToString
- (NSComparisonResult)compare:(NSString *)string;及更多重载的函数,可以做更细致的比较。
NSString+NSMutableString+NSValue+NSAraay用法汇总
http://www.cocoachina.com/iphonedev/sdk/2010/0607/1634.html


12.有时self.value=str不起作用,使用iValue=[str copy];吧。
13. NSPathUtilities.h文件中有对路径的一些操作函数,及对NSString,NSArray的一些扩展类别。
http://www.tongwenguan.com/tag/nstemporarydirectory


14.NSData writeToFile 不会追加文件,但不清楚是不是会先删除已存在的文件。


如流,新一代智能工作平台

如流,新一代智能工作平台

15.CGRect NSString

NSStringFromCGRect

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>

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询