NSString
来源:互联网 发布:hmcl启动器 linux 编辑:程序博客网 时间:2024/06/06 03:07
1. 创建字符串:
NSString*str = [[NSStringalloc]init];
NSString*str1 = [NSStringstring];
以上为使用初始化方法和便利构造器生成NSString对象, 在栈区: 0x7fff7a15ab90
NSString*str2 =@"你好";
以上为使用字面量快速生成NSString对象, 在静态区: 0x100004190
NSString*str3 = [[NSStringalloc]initWithString:@"这是一个字符串"];
// Using 'initWithString:' with a literal is redundant
NSString*str4 = [NSStringstringWithString:@"this is another NSString”];
// Using 'stringWithString:' with a literal is redundant
系统报出警告: Using 'stringWithString:' with a literal is redundant
建议使用字面量进行直接进行赋值
2. 计算字符串长度:
NSLog(@"%lu", str4.length);
length 为 NSUInteger 类型的属性:
@property(readonly)NSUIntegerlength;
3. 字符串截取:
- (NSString*)substringFromIndex:(NSUInteger)from;
从指定下标开始截取, 包含指定下标处的字符
- (NSString*)substringToIndex:(NSUInteger)to;
截取到指定下标, 不包含指定下标
- (NSString*)substringWithRange:(NSRange)range;
使用NSMakeRange方法定义一个NSRange类型的变量, 即定义一个范围, 范围规定了开始下标(含)和截取长度.
NSRange结构体的定义:
typedefstruct_NSRange {
NSUInteger location;
NSUInteger length;
NSUInteger location;
NSUInteger length;
} NSRange;
NSMakeRange方法的定义:
NS_INLINENSRangeNSMakeRange(NSUIntegerloc,NSUIntegerlen) {
NSRange r;
r.location= loc;
r.length= len;
return r;
NSRange r;
r.location= loc;
r.length= len;
return r;
}
4. 将任意类型转换为NSString (万能拼接):
- (instancetype)initWithFormat:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
初始化方法
+ (instancetype)stringWithFormat:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
便利构造器
NSString*str7 =@"is a string";
NSString*str8 = [NSStringstringWithFormat:@"str7, %@, %d times", str7,5];
printf("%p\n", str8);
打印结果: 0x100106990 —>静态区
chara[] ="iPhone";
NSString*str9 = [NSStringstringWithFormat:@"%s", a];
printf("%p\n", str9);
打印结果: 0x656e6f68506965 —>栈区
stringWithFormat方法会经常用到, 用以拼接URL
5. 字符串的比较(是否相等):
- (BOOL)isEqualTo:(id)object;
== 比较的是字符串的地址,
isEqualTo 方法比较的是字符串的内容
6. 字符串的替换:
- (NSString*)stringByReplacingOccurrencesOfString:(NSString*)target withString:(NSString*)replacementNS_AVAILABLE(10_5,2_0);
NSString*str13 =@"123abc";
NSString*str14 = [str13stringByReplacingOccurrencesOfString:@"3ab"withString:@" replaced "];
7. 字符串的比较(升序降序):
- (NSComparisonResult)compare:(NSString*)string;
compare方法返回值为枚举类型:
typedefNS_ENUM(NSInteger, NSComparisonResult) {NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
NSOrderedAscending -- 升序 —1
NSOrderedSame -- 相等 0
NSOrderedDescending -- 降序 1
NSComparisonResultresult = [str15compare:str16];
if(NSOrderedAscending== result) {
NSLog(@"这是升序");
}
8. 可变字符串:
学习一个新类, 先看其继承关系, 再看其初始化方法
@interfaceNSMutableString :NSString
NSMutableString类继承自NSString类, 因此可以使用NSString类中的全部方法
NSMutableString*str19 = [NSMutableStringstringWithFormat:@"nihao"];
NSMutableString*str20 = [NSMutableStringstringWithString:@"nihao"];
使用便利构造器stringWithFormat和stringWithString生成可变字符串对象,
若使用字面量, 会报警告: Incompatible pointer types initializing 'NSMutableString *' with an expression of type 'NSString *'
因为指针类型不一样, 字面量为不可变字符串类型, 不能赋给可变字符串类型. 数组同理.
可变和不可变:
- 不可变字符串的修改操作, 本质就是得到一个新的字符串, 对其操作的方法都有NSString *类型的返回值, 需要一个新的字符串对象来接收
- 可变字符串修改原字符串, 其修改方法没有返回值
9. 追加字符串:
- (void)appendFormat:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
NSString*strTemp =@"chi le ma?";
[str19 appendFormat:@"%@", strTemp];
NSLog(@"%@", str19);
10. 插入字符串:
- (void)insertString:(NSString*)aString atIndex:(NSUInteger)loc;
在指定下标之前插入
NSString*strTemp =@"chi le ma?";
[str19 insertString:@" bu "atIndex:1];
NSLog(@"%@", str19);
0 0
- NSString
- NSSTring
- NSString
- NSString
- NSString
- NSString
- nsstring
- NSString
- NSString
- NSString
- NSString
- NSString
- NSString
- NSString
- NSString
- NSString
- NSString
- nsstring
- AddressSanitizer使用记录
- 【node.js学习】--(4)--Express4.x框架
- unp.h的使用-Unix网络编程
- 使用远程yum源
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- NSString
- C编译器剖析_4.2 语义检查_表达式的语义检查(2)_数组索引
- win7 64位无线网络显示不可用,是有限访问权限,但能网上怎么办?
- mysql中更改列的名称
- [每天一个知识点]32-职业生涯-不值得定律
- 2014——年终总结
- 初识依赖注入
- C++ Primer 第7章 学习笔记 思维导图
- the max common divisor