在oc中有NSMutableString和NSString两种类型的字符串,但在swift中分别在定义的时候使用let和var来代表是否可以操作。let和var也通用于其他类型。使用let修饰的为不可变,使用var修饰的可变。
//使用var修饰可以动态的改变值
var varStr = "nihao"
varStr = "hello"
//使用let修饰编译不能通过
let letStr = "let nihao"
letStr = "hello"
常用方法
1、字符串拼接
字符串和字符的值可以通过+号来拼接并创建一个新的字符串
var varStr = "nihao"
varStr = "hello"
let letStr = "let nihao"
var newStr = varStr + letStr
print(newStr)
可以通过+=运算符将一个字符串添加到一个已经存在的字符串常量上,当然此字符串必须是var修饰的
var varStr = "nihao"
let letStr = "let nihao"
varStr += letStr
print(varStr)
可以同过append附加给字符串一个字符
var varStr = "nihao"
let char :Character = "!"
varStr.append(char)
print(varStr)
2、字符串的带入
将需要操作的变量或者常量用()包住,并在前面带上\符
let number = 5
let str = "\(number) 个人有 \(number * 3) 本书"
print(str)
输出结果:
5 个人有 15 本书
3、字符串个数
获取字符串个数使用strlen函数
//字符串个数
let str = "ajsdjofijweoifjaowiejfoiaw"
let countOfStr = (strlen(str))
print(countOfStr)
4、字符串大小写
//字符串大小写
let normal = "nihao"
let uppercaseNormal = normal.uppercaseString
print(uppercaseNormal) //结果为:NIHAO
let lowercaseNormal = uppercaseNormal.lowercaseString
print(lowercaseNormal) //结果为:nihao
//首字母大写
var str = "hello my name is zjh"
let capitalezedStr = str.capitalizedString
print(capitalezedStr) //结果为:Hello My Name Is Zjh
5、字符串截取
swift中截取字符串的坐标参数不是int类型,对应的参数为String.index。得创建对应的截取参数
// 字符串截取
let str = "abcdefghijklm"
let startIndex = str.startIndex.advancedBy(3) //起始
let endIndex = str.endIndex.advancedBy(-2) //结束
var range = Range<String.Index>(start: startIndex,end: endIndex) //区域
var subString1 = str.substringToIndex(endIndex)
var subString2 = str.substringFromIndex(startIndex)
var subString3 = str.substringWithRange(range)
print(subString1)
print(subString2)
print(subString3)
//输出结果
// abcdefghijk
// defghijklm
// defghijk
6、字符串比较
三种:字符串是否相等、前缀或后缀是否相等
//字符串比较
let str1 = "abcdefg.com"
let str2 = "abdoil.com"
if str1 == str2 {
print("两者相等")
}
//判断前缀
if str1.hasPrefix("ab") {
if str2.hasPrefix("ag") {
print("两个前缀相等")
}
}
//后缀
if str1.hasSuffix(".com") {
if str2.hasSuffix(".com") {
print("两个后缀相等")
}
}