原创blog,转载请注明出处
String
在swfit中,String兼容Unicode的方式。用法和C语言类似。 注意 在Cocoa和Cocoa touch中,Swift的String,和Foundation中的NSString是兼容的,全部NSString额API都能够调用String类型字符串常量 1、含转义字符:比如\n,\t等 2、单字节Unicode标量,\xmm 3、双字节Unicode标量,\ummmm 4、四字节Unicode标量,\Ummmmmmmm 这里的m为十六进制数let myname = "Hwc"//hwclet myname = "\"Hwc\""//"hwc"初始化
var emptyString = "" //空字符串var sameEmptyString = String()//空字符串var notEmptyString = "first"值传递 在swfit中。对字符串进行赋值操作或者作为參数传递给函数的时候是值传递。也就是说传递的是副本,而不是本身的引用。
这点和Cocoa的NSString不同
字符串经常使用操作1 isEmpty属性 推断是否为空let str = ""if str.isEmpty{ println("This is empty")}2 startIndex endIndex countElements 返回最后一个字符的index,返回值类型String.Index
let str = "Hello world"println(str.endIndex)//11
println(countElements(str))
3 toInt() 返回Int?即,假设能转换成功,则返回值是Int,否则为nilvar str = "123"var result = str.toInt()if result != nil{ println("Success")}
4 子字符串
subStringFromIndex(index:String.index) subStringToIndex(index:String.index) subStringWithRange(aRange:Range())这里要使用到一个advance函数: advance(start:T,n:Distance) 就是相对于T的偏移Distance距离。由于临时还找不到int转String.index合适的API stackoverflow上找了些资料,似乎swift的API还有非常多不完好的地方 在最后。我会讲到怎样扩展一个类,然后给出子字符串的样例
var str = "hello world"str.substringFromIndex(advance(str.startIndex,6))//hellostr.substringToIndex(advance(str.startIndex,5)) //worldstr.substringWithRange(Range(start:advance(str.startIndex,2),end:advance(str.startIndex,8)))//llo wo5 字符串拼接
非常简答,用加号+ 或者字符串插值
var str1 = "hello"var str2 = "world"var str = str1 + str2
var str2 = "\(str1) hwc and the \(str2)" //hello hwc and the world6 大写和小写转换
str.uppercaseString //HELLO WORLD str.lowercaseString //hello world7 前缀后缀 相等 Bool hasPrefix(prefix:String) Bool hasSuffix(suffix:String)
var str = "hello hwc"str.hasPrefix("hello") //truestr.hasSuffix("123") //false
var str1 = "jack"
if str == str1{ println("Equal")}8 处理子字符串
Void insert(newElememt:Character,atIndex:String.index) //插入字符Void removeAtIndex(i:String.Index) //删除字符Void removeRange(subRange:Range9 格式化合并字符串 String stringByAppendingFormat(format:String,arguments:CVarArgType...))//删除一个区间Void replaceRange(subRange:Range ,with:C)
var str = "hello world"str.stringByAppendingFormat("%d",4) //hello world4
10 utf8 utf16属性
str.utf8 //返回str的utf8表示的集合
str.utf16 //返回str的utf17表示的集合
扩展String
通过扩展swifr的类,能够提供新的方法而不改变原有的类。下面为几个扩展函数,分别扩展了
通过下标获得子字符串
以及substring的三个重载
extension String { subscript (r: Range ) -> String { get { let subStart = advance(self.startIndex, r.startIndex, self.endIndex) let subEnd = advance(subStart, r.endIndex - r.startIndex, self.endIndex) return self.substringWithRange(Range(start: subStart, end: subEnd)) } } func substring(from: Int) -> String { let end = countElements(self) return self[from..在playground的右边输出能够看到String { let end = from + length return self[from.. String { return self[from..
输出
hello
hello
world