Swift2-0基础_String(字符串)

// 字符串 字符串是值类型,常量变量赋值,在函数中传递会进行值拷贝
let name = "Kermit"
let word = "\"I am a boy\" __kermit"
print(word)
print("来个复杂点的输出\(word)")
let emptyString1 = String()
let emptyString2 = ""
// 两个字符串都为空并且等价
if emptyString1.isEmpty {
    print("it is a empty string");
}

// 可变字符串
var variableString = "boy"
variableString += "and girl"
//let constantString = "u"
//constantString += "and me"    // 常量不可被修改

// 计算字符数量
// 转义字符 \0 (空字符)、\\(反斜线)、\t (水平制表符)、\n (换行符)、\r (回车符)、\" (双引号)、\' (单引号)
let langString = "I am a sting aoeyuvbpmfdtnlgkhjqxuvwxyz"
print(langString.characters.count)
// 扩展方法
extension String {
    func KTLength() -> Int {
        return self.characters.count
    }
}
print("String的扩展方法的输出:字符串的字符数\(langString.KTLength())")
// 借用Foundation的方法  “Swift 的String类型与 Foundation NSString类进行了无缝桥接” 其他数据类型也都一样
let testString:NSString = "u are pig"
print("借用Foundation的接口\(testString.length)")

// 字符串拼接
let string1 = "hello"
let string2 = "world"
var string3 = string1 + string2
var string4 = "say"
string4 += string3
// 拼接在尾部
let oneCharacter:Character = "U"
string4.append(oneCharacter)
// 字符串插值
let num1 = 5
let message = "\(num1)+5=\(num1+5)" //5+5=10

// 字符串比较
let title1 = "123456"
let title2 = "123456"
if title1 == title2 {
    print("两个字符串相等")
}
// 检测字符串是否已固定的格式开头或者结尾(前缀和后缀)
let test1 = "abcedf"
let test2 = "defabc"
if test1.hasPrefix("abc") {
    print("test1 以 abc 开头")
}
if test2.hasSuffix("abc") {
    print("test2 以 abc 结尾")
}
// 大小写字符转换
let normal = "I am a Boy"
let shouty = normal.uppercaseString
let whispered = normal.lowercaseString

// 打印字符
for character in "test character ".characters {
    print("测试打印字符\(character)")
}
// 字符数组到字符串
let KermitCharacter:[Character] = ["K","e","r","m","i","t"]
let KermitString = String(KermitCharacter)
print(KermitString)

// 访问和修改字符串  可以通字符串的属性和方法来访问和读取它,当然也可以用下标语法完成
/* // 字符串索引 “每一个String值都有一个关联的索引(index)类型,String.Index,它对应着字符串中的每一个Character的位置” // Swift 的字符串不能用整数(integer)做索引 // 不同的字符可能会占用不同数量的内存空间,所以要知道 Character 的确定位置,就必须从 String 开 头遍历每一个 Unicode 标量直到结尾     使用 startIndex 属性可以获取一个 String 的第一个 Character 的索引。     使用 endIndex 属性可以获取最后一个 Character 的后一个位置的索引。     因此, endIndex 属性不能作为一个字符串的有效下标。如果 String 是空串, artIndex 和 endIndex 是相等的。     通过调用 String.Index 的 predecessor() 方法,可以立即得到前面一个索引,     调用 successor() 方法可以立即得 到后面一个索引。     任何一个 String 的索引都可以通过锁链作用的这些方法来获取另一个索引,也可以调用 cedBy(_:) 方法来获取。     但如果尝试获取出界的字符串索引,就会抛出一个运行时错误 */
let detailString1 = "test1"
print(detailString1[detailString1.startIndex])              // t
print(detailString1[detailString1.endIndex.predecessor()])  // 1
print(detailString1[detailString1.startIndex.successor()])  // e
let index = detailString1.startIndex.advancedBy(2)
print(detailString1[index])                                 // s
// 使用 characters 属性的 indices 属性会创建一个包含全部索引的范围( Range ),用来在一个字符串中访问单个字符
for index1 in detailString1.characters.indices {
    print("遍历\(detailString1[index1])")
}
// 插入和删除
var insertTest = "hello world"
// 1 调用 insert(_:atIndex:) 方法可以在一个字符串的指定索引插入一个字符
insertTest.insert("!", atIndex: insertTest.endIndex)
print(insertTest)   // hello world!
// 2 调用 insertContentsOf(_:at:) 方法可以在一个字符串的指定索引插入一个字符串
insertTest.insertContentsOf("字符串".characters, at: insertTest.startIndex)
print(insertTest)   // 字符串hello world!
// 3 调用 removeAtIndex(_:) 方法可以在一个字符串的指定索引删除一个字符
insertTest.removeAtIndex(insertTest.startIndex)
print(insertTest)   // 符串hello world!
// 4 调用 removeRange(_:) 方法可以在一个字符串的指定索引删除一个子字符串
let range = insertTest.startIndex.advancedBy(0) ..< insertTest.startIndex.advancedBy(2)
insertTest.removeRange(range)
print(insertTest)   // hello world!

你可能感兴趣的:(String,函数,Class,swift)