@phper
2016-08-12T04:28:23.000000Z
字数 2423
阅读 4763
swift
用hasPrefix和hasSuffix这2个字符串的对象方法,来判断和比较,他们返回boolean值的true或falsely
看个例子:
//申明一个字符数组,后面会讲到var string1 = ["Act1:1:Dojo","Act1:2:Do","Act1:3:Dojo","Act1:4:Dojo"]//申明2个整型变量,记住中间要用逗号啊。var j = 0,k = 0,d = 0for i in string1 {if i.hasPrefix("Act1") {j++}if i.hasSuffix("Do"){k++}if i.containsString("Do") {d++}}print("有Act前缀的数有\(j)个") //输出4print("有Do后缀的数有\(k)个") //输出1print("包含Do的数有\(d)个") //输出4
大小写转换是一般的语言中都会有的函数方法,swift中用字符串对象的属性uppercaseString和lowercaseString和capitalizedString来转换,记住是属性。不是函数,也不是方法:
//大小写转换var string2 = "hi,my name is yangyi ,what`s your name?"var string3 = "hi,My Name IS Yangyi ,what`s your name?"var string4 = "hi,my name is yangyi ,what`s your name?"var string_upp = string2.uppercaseStringvar string_lower = string3.lowercaseStringvar first_upp = string4.capitalizedStringprint("全部大写\(string_upp)")//全部大写HI,MY NAME IS YANGYI ,WHAT`S YOUR NAME?print("全部小写\(string_lower)")//全部小写hi,my name is yangyi ,what`s your name?print("首字母大写\(first_upp)")//首字母大写Hi,My Name Is Yangyi ,What`s Your Name?
我顺便来复习下其他语言中是如何大小写转换的:
//javascriptvar a = "hello";var b = "HellO";var a_upper = a.toUpperCase(); //大写var a_lower = a.toLowerCase(); //小写
//php$a = "hello, word!";$a_upper = strtoupper($a); //转换成大写$b_lower = strtolower($b); //转换成小写$first_upper = ucfirst($b); //首字母大写
在swift2中遍历字符串得用字符串的一个 characters属性:
var str = "Hello, Swift~"for c in str.characters {print(c, terminator: " ")}
输出:
H e l l o , S w i f t ~
swift2中不能用str[0], str[1]等方式,得用index索引的方式,定位到位置:
startIndex 标示字符串的0开始的一个索引
var str = "Hello, Swift"let startIndex = str.startIndex //0startIndex //0str[startIndex] //H
advancedBy 从索引位置开始取第几个值
var str = "Hello, Swift"let startIndex = str.startIndex //0startIndex //0str[startIndex.advancedBy(1)] //estr[startIndex.advancedBy(7)] //S
predecessor 取前一个 succesor 取后一个
var str = "Hello, Swift"let startIndex = str.startIndex //0let spaceIndex = startIndex.advancedBy(6) // " "定位到空格str[spaceIndex.predecessor()] // 空格前是","str[spaceIndex.successor()] // 空格后是"S"
endIndex 最后一个字符索引。
var str = "Hello, Swift"let endIndex = str.endIndex // 13 最后一位是13。str[endIndex.predecessor()] //但是13没有,只有12.所以得取前一个。
所以,startIndex 和 endIndex是一个前闭后开 0..<13这样的结构。
Range 去一个区间的字符
str[startIndex..<spaceIndex] // Hello,
其它的一些字符串的函数用法:
let range = startIndex..<spaceIndex.predecessor() // 生成一个range 0..<5str.replaceRange(range, with: "Hi") // 替换一个区间 Hi, Swiftstr.appendContentsOf("!!!") // 在尾部追加 "Hi, Swift!!!"str.insert("?", atIndex: str.endIndex) //在一个索引出,插入一个字符 Hi, Swift!!!?str.removeAtIndex( str.endIndex.predecessor() ) // 移除一个字符,在索引处。 // 返回 ?str.removeRange( str.endIndex.advancedBy(-2)..<str.endIndex ) //移除一个区间。Hi, Swift!