NSString,NSScanner,NSData,NSAttributedString

东门楚
2023-12-01

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 不会追加文件,但不清楚是不是会先删除已存在的文件。

http://hi.baidu.com/jis2007/blog/item/62b47dc2e7cab63be4dd3bff.html

http://hi.baidu.com/jis2007/blog/item/62b47dc2e7cab63be4dd3bff.html


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>



 类似资料: