Swift中的字符和字符串
//MARK:-
//MARK:- Swift中的字符
/*
Swift和OC字符不一样
1.Swift中表示单个字符是用双引号,必须有类型(Character)描述,否者默认是字符串类型,而且只能放一个字符,否者会报错
2.Swift中的字符类型和OC中的也不一样, OC中的字符占一个字节,因为它只包含ASCII表中的字符, 而Swift中的字符除了可以存储ASCII表中的字符还可以存储unicode字符,
例如中文:
Swift: var charValue:Character = "李" // 正确
3、OC的字符是遵守ASCII标准的,Swift的字符是遵守unicode标准的, 所以可以存放时间上所有国家语言的字符(大部分)
*/
var value : Character = "会"
//MARK:-
//MARK:- Swift中的字符串的介绍
/*
1、Swift中字符串的类型是String,用双引号""
2、String是一个结构体,性能更高,支持直接遍历
3、Swift提供了String和NSString的无缝转换
4、Swift中的字符类型和OC中的也不一样, OC中的字符占一个字节,因为它只包含ASCII表中的字符, 而Swift中的字符除了可以存储ASCII表中的字符还可以存储unicode字符
5、OC的字符是遵守ASCII标准的,Swift的字符是遵守unicode标准的, 所以可以存放世界上所有国家语言的字符(大部分)
6、字符串是多个字符的集合, 想要存放多个字符需要使用字符串
*/
//MARK:-
//MARK:- 字符串的使用
//MARK:1、字符串的定义
//定义不可变字符串
let letStr = "hello letString上的福利"
//定义可变字符串
var varStr = "hello varString"
//MARK:2、获取字符串的长度
let count = letStr.characters.count
print(count)
print(letStr.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))//计算字节数
//MARK:3、遍历字符串
for a in letStr.characters {
print(a)
}
//MARK:4、两个字符串的拼接
let str1 = "hui"
var str2 = "qin"
let pStr = str1 + str2
print(pStr)
//MARK:5、字符串与其它数据类型的拼接
let age = 28
let info = "her name is \(pStr),age is \(age)"
print(info)
//MARK:6、字符串的格式化 比如时间:09:09
let min = 9
let second = 9
let time = String(format: "%02d:%02d", arguments: [min,second])
print(time)
//MARK:7、字符串的截取
//方式一:(Swift提供的特殊截取方式)(麻烦)
//1、定义字符串
let myStr = "www.pantianfeng.com"
//2、截取开始位置
let fromIndex = myStr.startIndex.advancedBy(3)
let headerStr = myStr.substringFromIndex(fromIndex)
//3、截取结束位置
let footerStr = myStr.substringFromIndex(myStr.endIndex.advancedBy(-3))
//4、截取中间的字符串
let range = Range(start: myStr.startIndex.advancedBy(4), end: myStr.endIndex.advancedBy(-4))
let middleStr = myStr.substringWithRange(range)
//方式二:(常用)
//将String转成NSString来使用,在标识符后加:as NSString即可
var subStr = (myStr as NSString).substringFromIndex(4)
subStr = (myStr as NSString).substringToIndex(4)
subStr = (myStr as NSString).substringWithRange(NSRange(location: 4, length: 5))
//MARK:8、字符串比较
/*
1、OC中用法:
NSString *str1 = @"abc";
NSString *str2 = @"abc";
方法一:
if ([str1 compare:str2] == NSOrderedSame)
{
NSLog(@"相等");
}else
{
NSLog(@"不相等");
}
方法二:
if ([str1 isEqualToString:str2])
{
NSLog(@"相等");
}else
{
NSLog(@"不相等");
}
2、Swift:(== / != / >= / <=), 和C语言的strcmp一样是逐个比较
*/
var string1 = "daihuiqin"
var string2 = "PANTIANFWENG"
if string1 == string2{
print("相等")
}else{
print("不相等")
}
//MARK:9、判断前后缀
/*
1、OC:
NSString *str = @"http://ios.520it.cn";
if ([str hasPrefix:@"http"]) {
NSLog(@"是url");
}
if ([str hasSuffix:@".cn"]) {
NSLog(@"是天朝顶级域名");
}
*/
var string = "http://www.pantianfeng.abc"
if string.hasPrefix("http"){
print("是URL")
}
if string.hasSuffix("abc"){
print("是域名")
}
//MARK:10、大小写转换
/*
OC:
NSString *str = @"abc.txt";
NSLog(@"%@", [str uppercaseString]);
NSLog(@"%@", [str lowercaseString]);
*/
print(string1.uppercaseString)
print(string2.lowercaseString)