NSString 详解

在iOS系统,NSString可能是最常用的对象,很多用法跟其他语言不一样。

字符串对象NSString

使用格式创建字符串

+ (id)stringWithFormat:(NSString *)format...
- (id)initWithFormat:(NSString *)format...
NSString *str = "hello";
NSString *string = [NSString stringWithFormat:@"%@ world",str];
NSLog(string);

结果:

hello world

常用的替换符

  • %@ NSString实例
  • %d,%D,%i 整数
  • %4d,%4D,%4i 格式化整数
  • %ld,%lD,%li 长整数
  • %u,%U 无符号整数
  • %x 将无符号整数以十六进制小写字母显示
  • %X 将无符号整数以十六进制大写字母显示
  • %f 小数
  • %c 字符
  • %s C语言字符串
  • %% 显示%字符本身

范围集合NSRange

定义

typedef struct _NSRange
{
     unsigned int location;
     unsigned int length;
}NSRange;

NSMakeRange函数

这个函数比较特殊 返回一个NSRange的对象。

NSMakeRanger(unsigned int location,unsigned int length);

例如:

NSRange range = NSMakeRanger(0,5);
NSLog(@"location is %d,length is %d",range.location,range.length);

查找

如果找到就返回范围,否则NSRange的location项被设置为NSNotFound

- (NSRange)rangeOfString:(NSString *)subString;
- (NSRange)rangeOfString:(NSString *)subString option:(unsigned)mask;
- (NSRange)rangeOfString:(NSString *)subString option:(unsigned)mask range:(NSRange)range;
//mask常用选项列表
//NSCaseInsensitiveSearch   不区分字母大小写
//NSLiteralSearch    对字符串进行字节单位的比较,一般可提高检索速度
//NSBackwardsSearch   从范围的末尾开始检索
//NSAnchoredSearch    仅检索制定范围的前部。忽略字符串中间的检索字符
NSString *string = @"hello world";
NSRange range = [string rangeOfString:@"he"];
if(range.location != NSNotFound)
{
        NSLog(@" location=%d,length=%d",range.location,range.length);
}

截取字符串

NSString
//返回字符串开头至index位的字符串 不包含索引位
- (NSString *)substringToIndex:(unsigned)index;
//返回字符串第index位至末尾的字符串 包含索引位
- (NSString *)substringFromIndex:(unsigned)index;
//返回字符串中范围range内的字符串
- (NSString *)substringWithRange:(NSRange)range;
//包含索引位
NSString *string = [string substringWithRange:NSMakeRange(5,2)];

比较字符串

NSString *String1 = @"NSStringInformation.txt";
//hasPrefix 前缀比较
[String1 hasPrefix:@"NSString"] = = 1 ?  NSLog(@"YES") : NSLog(@"NO");
//hasSuffix 后缀比较
[String1 hasSuffix:@".txt"] = = 1 ?  NSLog(@"YES") : NSLog(@"NO");
//isEqualToString 完全比较
if([string1 isEqualToString:@""])
{
    NSLog(@"string1 is blank");
}

替换字符串

NSString *newString  = [oldString stringByReplacingOccurrencesOfString:@"x" withString:@"y"];

分离字符串成数组

NSString *string = @"A|B|C|D";
NSArray *array = [string componentsSeparatedByString:@"|"];

读取文本文件

NSString
+ (id)stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error     //自动释放内存
- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error
NSString *string = [NSString stringWithContentsOfFile:@"/user/test/yw.txt" encoding:NSUTF8StringEncoding error:&error];
if(string){}

输出文本文件

NSString
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error
//参数 atomically 暂时将文件保存到辅助文件中
//path 
The file to which to write the receiver. If path contains a tilde (~) character, you must expand it withstringByExpandingTildeInPath before invoking this method.
//扩展路径
NSString *Path = @"~/NSData.txt";
NSString *absolutePath = [Path stringByExpandingTildeInPath];
NSLog(@"absolutePath:%@",absolutePath);
NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);
//文件扩展名
NSString *Path = @"~/NSData.txt";
NSLog(@"Extension:%@",[Path pathExtension]);


NSString 详解

时间: 2024-12-29 13:33:13

NSString 详解的相关文章

0bjective-c 之 NSString 使用详解

一个基本的该类型字符串例子: @"This is a constant character string object"; 在后台显示它: NSLog (@"%@", @"This is a constant character string object"); 得到其长度: int len = [@"Hello" length]; NSLog (@"Length of string = %i", len)

- (BOOL)runMode:(NSString *)mode beforeDate:(NSDate *)limitDate 方法 详解

首先是Run Loop的部分概念,它的作用就是循环.处理事件.具体来说有两个方面: 1. 定时启动任务(一般用和Timer协作):2. 处理事件. 在单线程的app中,不需要注意Run Loop,但不代表没有.程序启动时,系统已经在主线程中加入了Run Loop.它保证了我们的主线程在运行起来后,就处于一种"等待"的状态(而不像一些命令行程序一样运行一次就结束了),这个时候如果有接收到的事件(Timer的定时到了或是其他线程的消息),就会执行任务,否则就处于休眠状态. 如果我们要写多线

详解OS X和iOS图像处理框架Core Image

转自:http://www.csdn.net/article/2015-02-13/2823961-core-image 摘要:本 文结合实例详解了OS X和iOS图像处理框架Core Image的使用,如何通过Core Image来创建和使用iOS的内置滤镜,非常适合初学者学习.虽然示例代码是用Swift写的iOS程序,不过实现概念很容易转换到 Objective-C和OS X. 这篇文章会为初学者介绍一下Core Image,一个OS X和iOS的图像处理框架. 如果你想跟着本文中的代码学习

iOS开发——实用篇&KVO与KVC详解

KVO与KVC详解 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC).键值监听(KVO)特性: 键值编码KVC 键值监听KVO 键值编码KVC 我们知道在C#中可以通过反射读写一个对象的属性,有时候这种方式特别方便,因为你可以利用字符串的方式去动态控制一个对象.其实由于ObjC的语言特性,你根部不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Valu

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:     UIWebView * view = [[UIWebView al

iOS SDK详解之NSScanner-分析String

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏,这里有很多基础的文章 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:NSScanner是分析String,把String转为substring和数字的很好的工具.它使用一个NSString初始化,使用的时候通常从开头处扫描直到结尾. 本文会先举出两个例子,然后详细的讲解NSScanner的方法.源码是

详解Objective-c Block应用

目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可執行的程式組成,也可以稱做沒有名字的Function (Anonymous function) AD:2014WOT全球软件技术峰会北京站 课程视频发布 详解Objective-c block应用是本文要介绍的内容,主要介绍的是Objective-c block应用,不多说,先来看详细内容. Apple在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一

Objective-C中的浅拷贝和深拷贝详解

  浅拷贝 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间.如: 1 2 char* str = (char*)malloc(100); char* str2 = str; 浅拷贝只是对对象的简单拷贝,让几个对象共用一片内存,当内存销毁的时候,指向这片内存的几个指针需要重新定义才可以使用,要不然会成为野指针. iOS 里面的浅拷贝: 在 iOS 里面, 使用retain 关键字进行引用计数,就是一种更加保险的浅拷贝.他既让几个指针共用同一片内存空间,又可以在release

ScrollView详解

创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: 1 2 3 CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] initWithFrame:bounds ]; 当你创建完滚动视图后,你可以将另一个视图的内容粘合到滚动视