充满向往的尝试Swift 的 String的用法,然后,就各种蛋疼。。。这就是我用的感受 注意: 此处为iOS 9代码,iOS 10可能会不适配
/**
* 创建空字符串
* 建议使用“?”判断解析,当此变量没有值得时候,打印的话不会crash
* 若使用“!”强制解析,当变量没有值的时候,打印的话,会crash
*/
var string : String?
/**
* 创建空字符串第二种写法
* 此种写法,即使并没有给字符串进行赋值,当你打印的时候,会打印为空,而不会crash
*/
var otherString: String = String()
let letString = "常量字符串"; // 创建常量字符串
string = "hello,World!my name Is Apple" // 字符串赋值
otherString = "123"
// String 方法截取 (这方法用着感觉真蛋疼,估计我会果断放弃,但是官方貌似推荐这种方式)
let fromeIndex = string?.startIndex.advancedBy(3) // 起始下标 3,获取 Index起始位之后 3个长度
let fromString1: String = (string?.substringFromIndex(fromeIndex!))! // 截取字符串,从下标为 3开始截取,截到最后(包含下标 3)
let toIndex = string?.startIndex.advancedBy(4)
let toString1: String = (string?.substringToIndex(toIndex!))! // 截取字符串,从头开始截取,截到下标为 4的位置(不包含下标 4)
let endIndex = string?.endIndex.advancedBy(-3) // 结束下标,获取 Index结束之前的 3个长度
let rangIndex = Range<String.Index>(start: fromeIndex!, end: endIndex!)// 获取 index的截取区间,此区间为半开区间
let rangString1: String = (string?.substringWithRange(rangIndex))! // 截取区间内的长度
// 将 String 转化成 NSString再截取。还是喜欢这种写法,为什么呢?因为我懒
let fromString2 = (string! as NSString).substringFromIndex(3) // 截取字符串,从下标为 3开始截取,截到最后(包含下标 3)
let toString2 = (string! as NSString).substringToIndex(4) // 截取字符串,从头开始截取,截到下标为 4的位置(不包含下标 4)
let rangString2 = (string! as NSString).substringWithRange(NSMakeRange(3,4)) // 截取字符串,从下标 3开始截取,截 4位(包含下标3)
let isPre = string?.hasPrefix(",") // 判断字符串是否以","开头,返回值为 true 或者 false
let isSuff = string?.hasSuffix(",") // 判断字符串是否以","结尾,返回值为 true 或者 false
let isContains = string?.containsString("a") // 判断字符串内是否包含"a",返回值为 true 或者 false
let isEmpty = string?.isEmpty // 判断字符串是否为空,为空返回 true不为空返回 false
let stringArray = string?.componentsSeparatedByString(",") // 切割字符串,返回一个数组
let stringLength = string?.characters.count // 获取字符串长度
// 字符串替换
let replaceString = string?.stringByReplacingOccurrencesOfString("e", withString:"E")
let replaceString2 = string?.stringByReplacingOccurrencesOfString("E", withString:"e",
options:NSStringCompareOptions.BackwardsSearch,
range:nil)
let upperString = string?.uppercaseString // 全大写
let lowerString = string?.lowercaseString // 全小写
let capiString = string?.capitalizedString // 首字母大写
// 字符串合并、拼接
let sumString = otherString + string! + letString
// UTF8 编码
let stringUTF = string?.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
// 字符串遍历,获取字符
var characterArray:[Character] = [] // 遍历String中的 Character。实际上,每个 String 都是都是由Character字
for character in (string?.characters)! { // 符组成的。字符串不光只能遍历 Character,还能遍历 utf8,utf16等
characterArray.append(character)
}
// 字符串 与 其他数据类型的拼接
let name = "LJ"
let birthday = 1015
let LJInfo = "my name is \(name), birthday is\(birthday)"
// 字符串的比较 ==, !=, <, >
if otherString == string {
debugPrint("相同是没有道理的")
} else {
debugPrint("不同才是对的")
}
let changeToInt : Int = Int(otherString)! // 将字符串转成整型
debugPrint("string:\(string)")
debugPrint("rangIndex:\(rangIndex)")
debugPrint("fromString1:\(fromString1)")
debugPrint("fromString2:\(fromString2)")
debugPrint("toString1:\(toString1)")
debugPrint("toString2:\(toString2)")
debugPrint("rangString1:\(rangString1)")
debugPrint("rangString2:\(rangString2)")
debugPrint("sumString:\(sumString)")
debugPrint("isPre:\(isPre)")
debugPrint("isSuff:\(isSuff)")
debugPrint("isContains:\(isContains)")
debugPrint("isEmpty:\(isEmpty)")
debugPrint("stringArray:\(stringArray)")
debugPrint("stringLength:\(stringLength)")
debugPrint("stringUTF:\(stringUTF)")
debugPrint("replaceString:\(replaceString)")
debugPrint("replaceString2:\(replaceString2)")
debugPrint("upperString:\(upperString)")
debugPrint("lowerString:\(lowerString)")
debugPrint("capiString:\(capiString)")
debugPrint("characterArray:\(characterArray)")
debugPrint("LJInfo:\(LJInfo)")
debugPrint("changeToInt:\(changeToInt)")