基本用法
//1.
创建字符串
//1.1
常规创建,创建一个空的字符串
//
这样创建的字符串几乎没用,因为它们是空的而且还不可变
//alloc
创建
NSString
*str1 = [[
NSString
alloc
]
init
];
NSLog
(
@"str1 is:%@"
,str1);
//
用类方法创建
NSString
*str2 = [
NSString
string
];
NSLog
(
@"str2 is:%@"
,str2);
//1.2
格式化创建
//alloc
创建
NSString
*str3 = [[
NSString
alloc
]
initWithFormat
:
@"wlecome"
];
NSLog
(
@"str3 is:%@"
,str3);
//
类方法创建
NSString
*str4 = [
NSString
stringWithFormat
:
@"beijng"
];
NSLog
(
@"str4 is:%@"
,str4);
//1.3
快速创建
NSString
*strtemp =
@"strtemp"
;
NSLog
(
@"strtemp is %@"
,strtemp);
//1.4
下面两种方法已经不推荐使用
//
因为它们较为繁琐,且效果和快速创建是一样的,已经被弃用
//NSString *str222 = [[NSString alloc] initWithString:@"222"];
//NSString *str333 = [NSString stringWithString:@"333"];
//1.5
特别注意
//
这样并没有修改字符串,而是修改了指针的指向
str1 =
@"hello world"
;
NSLog
(
@"str1 is %@"
,str1);
//2.
字符串的比较
NSString
*str6 =
@"str6"
;
NSString
*str7 =
@"str6"
;
//2.1
比较是不是同一个对象
if
([str6
isEqualTo
:str7]){
NSLog
(
@"str6
和
str7
是同一个对象
"
);
}
else
{
NSLog
(
@"
不是同一个对象
"
);
}
//2.2
比较字符串的指针
BOOL
bool67 =(str6 == str7);
if
(bool67){
NSLog
(
@"str6
和
str7
是同一个字符串
"
);
}
else
{
NSLog
(
@"str6
和
str7
不是同一个字符串
"
);
}
//2.3比较字符串内容
if
([str6
isEqualToString
:str7]){
NSLog
(
@"str7
和
str6
字符串内容相同
"
);
}
else
{
NSLog
(
@"str6
和
str7
字符串内容不相同
"
);
}
//2.4比较字符串的大小
//
使用
NSComparisonResult
接受结果
//
其原理是使用了枚举
//typedef NS_ENUM(NSInteger, NSComparisonResult)
//{NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
NSString
*str8 =
@"see you tommorrow"
;
NSString
*str9 =
@"see you chen"
;
NSComparisonResult
result = [str8
caseInsensitiveCompare
:str9];
if
(result ==
NSOrderedAscending
){
NSLog
(
@"
升序
"
);
}
else
if
(result ==
NSOrderedSame
){
NSLog
(
@"
相等
"
);
}
else
if
(result ==
NSOrderedDescending
){
NSLog
(
@"
降序
"
);
}
//3.
求字符串的长度
,
使用
length
NSInteger
length = [str8
length
];
NSLog
(
@"str8 length is %ld"
,length);
//4.
字符串转换的问题
//
转为大写
:uppercaseStrig
NSString
*str8upper = [str8
uppercaseString
];
NSLog
(
@"str8upper is %@"
,str8upper);
//
转为小写
:lowercaseString
NSString
*str8lower = [str8
lowercaseString
];
NSLog
(
@"str8lower is %@"
,str8lower);
//
首字母大写
:capitalzedString
NSString
*str8capitalized =[str8
capitalizedString
];
NSLog
(
@"strcapitalized is %@"
,str8capitalized);
//5.
字符串和基本数据类型的转换
//5.1
转为整型
NSString
*str10 =
@"123"
;
NSInteger
integervalue = [str10
integerValue
];
NSLog
(
@"integervalue is %ld"
,integervalue);
//5.2
转为浮点型
NSString
*str11 =
@"1234.1"
;
CGFloat
floatvalue = [str11
doubleValue
];
NSLog(@"floatvalue is %f",floatvalue);
//5.3z换为布尔型
BOOL
boolvalue = [str10
boolValue
];
NSLog
(
@"boolalue is %d"
,boolvalue);
//
特别注意
//
如果赋值的字符串是
false
或者是
0
,结果是
0
//
如果赋值的字符串是
true
或者其他不为
0
的字符串,结果是
1
NSString
*truth =
@"01"
;
BOOL
value = [truth
boolValue
];
NSLog
(
@"value is %d"
,value);
//6.
从键盘输入赋值一个字符串
//
使用字符指针来引用一个字符串
char
*p =
malloc
(20);
//
开辟内存
NSLog
(
@"
请输入字符串:
"
);
scanf
(
"%s"
,p);
NSString
*input = [
NSString
stringWithCString
:p
encoding
:
NSUTF8StringEncoding
];
NSLog(@"经过输入得到的字符串是:%@",input);
用法补充
//1.
字符串截取
//1.1
从开始截取到最后
NSString *str1 =
@"hello world"
;
NSString *str2 =[str1 substringFromIndex:1];
NSLog(
@"str2 is %@"
,str2);
//1.2
截取下前面的字符,不包括下标
//
包括最后一位的截取是
11
,如果是
12
就会数组越界
NSString *str3 = [str1 substringToIndex:11];
NSLog(
@"str3 is %@"
,str3);
//1.3
使用结构体截取
//
从下标
2
位开始截取,截取
6
位
NSRange range ={2, 6};
NSString *str4 = [str1 substringWithRange:range];
NSLog(
@"str4 is %@"
,str4);
//
输出一个结构体
NSLog(
@"range is %@"
,NSStringFromRange(range));
//2.
获取字符
//
通过下标取字符
NSString *str5 =
@"I love you ,China"
;
char
c = [str5 characterAtIndex:3];
NSLog(
@"str5
中下标为
3
的字符是
%c"
,c);
//3.
通过特殊字符分隔字符串
NSString *str6 =
@"
天平座,水瓶座,双子座,白羊座
"
;
NSArray *array = [str6 componentsSeparatedByString:
@","
];
NSLog(
@"
输出这个数组是
%@"
,array);
//4.
字符串的拼接
NSString *str7 =
@"take me"
;
NSString *str8 =
@"to your heart"
;
//4.1 stringWithFormat
NSString *str9 = [NSString stringWithFormat:
@"%@ %@"
,str7,str8];
NSLog(
@"str9 is %@"
,str9 );
//4.2 stringByAppendingString
NSString *str10 = [str7 stringByAppendingString:str8];
NSLog(
@"str10 is %@"
,str10);
//4.3 stringbyAppendingFormat
NSString *str11 = [str7 stringByAppendingFormat:
@" %@"
,str8];
NSLog(
@"str11 is %@"
,str11);
//
字符串拼接扩展一
,
自动增加了
"/"
NSString *str12 = [str7 stringByAppendingPathComponent:str8];
NSLog(
@"st12 is %@"
,str12);
//
字符串拼接扩展二,自动增加了
“."
NSString *str13 = [str7 stringByAppendingPathExtension:str8];
NSLog(
@"str13 is %@"
,str13);
//5.
字符串中的类型转换
NSString *truth =
@"false"
;
BOOL
value = [truth boolValue];
NSLog(
@"value is %d"
,value);
//6.
字符串查找
//
指定一个字符串,然后在原字符串中查找,返回的是一个结构体
NSString *str14 =
@"my hometown is zhumadian!"
;
NSString *str15 =
@"zhumadian"
;
NSRange range2 = [str14 rangeOfString:str15];
//
输出结构体
NSLog(
@"range2 is %@"
,NSStringFromRange(range2));
//
通过获取结构体内容的方式输出
NSLog(
@"range2.location is%ld,range2 length is %ld"
,range2.location,range2.length);
//
通过判断的方式,查看是否找到了
if
(range2.location!= NSNotFound){
NSLog(
@"
找到了字符串
"
);
}
else
{
NSLog(
@"
没有找到字符串
"
);
}
//
在枚举中,
NSnotFound
被定义为
NSIntegerMax,
即最大值
//
输出的值是:
9223372036854775807
NSLog(
@"
输出
NSNotFound
:
%ld"
,NSNotFound);
//7.
字符串替换
//7.1
使用已有字符串替换原字符串中的指定部分
//StringByReplacingOccurrencesOfString
NSString *str16 =
@"the way to success"
;
NSString *str17 = [str16 stringByReplacingOccurrencesOfString:
@"success"
withString:
@"dream"
];
NSLog(
@"
替换后得到字符串
str17
:
%@"
,str17);
//7.2
使用结构体替换
//stringByReplacingCharactersInRange
NSRange range3 = {3, 6};
NSString *str18 =
@"abcdefghijk"
;
NSString *str19 = [str18 stringByReplacingCharactersInRange:range3 withString:
@"ZS"
];
NSLog(
@"str19 is %@"
,str19);
第二部分》》》》NSMutableString的使用
//NSMutableString
是
NSString
的子类
//NSMutbaleString
是可变字符串,可以修改字符串的内容
//1.
创建可变字符串
//
注意:不可以使用快速创建的方式
//1.1NSMutableString
继承与
NSString
,同样通过
alloc
和类方法可以创建空的字符串
//1.2
普通方法创建
NSMutableString
*str1 =[[
NSMutableString
alloc
]
initWithString
:
@"welcome"
];
NSLog
(
@"str1 is %@"
,str1);
NSMutableString
*str2 = [
NSMutableString
stringWithString
:
@"it is ok!"
];
NSLog
(
@"str2 is %@"
,str2);
//1.3
通过格式化的方法来创建
NSMutableString
*str3 =[[
NSMutableString
alloc
]
initWithFormat
:
@"hello"
];
NSLog
(
@"str3 is %@"
,str3);
NSMutableString
*str4 = [
NSMutableString
stringWithFormat
:
@"world"
];
NSLog
(
@"str4 is %@"
,str4);
//2.
插入字符串
//
使用
insertString
[str4
insertString
:
@"hehe"
atIndex
:0];
NSLog
(
@"str4
从
0
位置插入字符串后:
str4 = %@"
,str4);
//3.
删除字符串
//
首先构建好结构体
//deleteCharactersInRange
NSRange
range = {1,2};
[str4
deleteCharactersInRange
:range];
NSLog
(
@"str4
删除字符串后得:
str4 = %@"
,str4);
//4.
拼接字符串,是在本身上添加
//4.1
使用
appendString
[str4
appendString
:
@"ZS"
];
NSLog
(
@"
使用
appendString
追加:
str4=%@"
,str4);
int
index =90;
//4.2
使用
appendFormat
[str4
appendFormat
:
@"%d"
,index];
NSLog
(
@"
使用
appendFormat
添加:
str4=%@"
,str4);
//5.
替换字符串
NSRange
range2 ={2,5};
[str4
replaceCharactersInRange
:range2
withString
:
@"
替换
"
];
NSLog(@"替换字符串后str4 = %@",str4);
第三部分》》》关于字符串的练习
//
题目:去掉字符串
“123-456-789”
中间的
‘-’,
得到新数组
//
第一种方法
//
分别截取获取数字,得到三个新数组,然后拼接
NSString
*str =
@"123-456-789"
;
NSString
*str1 = [str
substringWithRange
:
NSMakeRange
(0, 3)];
NSString
*str2 = [str
substringWithRange
:
NSMakeRange
(4, 3)];
NSString
*str3 =[str
substringWithRange
:
NSMakeRange
(8, 3)];
NSString
*str4 = [str1
stringByAppendingFormat
:
@"%@%@"
,str2,str3];
NSLog
(
@"
方法一得到字符串:
%@"
,str4);
//
第二种方法
//
替换的思想,直接把
“-”
替换掉
NSString
*str5 = [str
stringByReplacingOccurrencesOfString
:
@"-"
withString
:
@""
];
NSLog
(
@"
方法二得到字符串:
%@"
,str5);
//
第三种方法
//
先分割得到数组,再组装拼接
NSArray
*array=[str
componentsSeparatedByString
:
@"-"
];
NSString
*str6 =[array
componentsJoinedByString
:
@""
];
NSLog
(
@"str7 is %@"
,str6);