原创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"//hwc
let 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))
返回Int?即,如果能转换成功,则返回值是Int,否则为nil
var 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))//hello
str.substringToIndex(advance(str.startIndex,5)) //world
str.substringWithRange(Range(start:advance(str.startIndex,2),end:advance(str.startIndex,8)))//llo wo5 字符串拼接
很简答,用加号+ 或者字符串插值
var str1 = "hello"
var str2 = "world"
var str = str1 + str2var str2 = "\(str1) hwc and the \(str2)" //hello hwc and the world6 大小写转换
str.uppercaseString //HELLO WORLD 
str.lowercaseString //hello world
7 前缀后缀 相等
Bool hasPrefix(prefix:String)
Bool hasSuffix(suffix:String)
var str = "hello hwc"
str.hasPrefix("hello") //true
str.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:Range<String.Index>)//删除一个区间
Void replaceRange(subRange:Range<String.Index>,with:C)9 格式化合并字符串
String stringByAppendingFormat(format:String,arguments:CVarArgType...)
var str = "hello world"
str.stringByAppendingFormat("%d",4) //hello world410 utf8 utf16属性
str.utf8 //返回str的utf8表示的集合
str.utf16 //返回str的utf17表示的集合
扩展String
通过扩展swifr的类,可以提供新的方法而不改变原有的类。以下为几个扩展函数,分别扩展了
通过下标获得子字符串
以及substring的三个重载
extension String {
    subscript (r: Range<Int>) -> 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..<end]
    }
    func substring(from: Int, length: Int) -> String {
        let end = from + length
        return self[from..<end]
    }
    func substring(from:Int, to:Int) ->String
    {
        return self[from..<to]
    }
}
var str = "hello world"
var str1 = str.substring(6)
var str2 = str.substring(0,to:5)
var str3 = str.substring(0,length:5)在playground的右边输出可以看到
输出
hello
hello
world
Swift中String的Unicode兼容及操作详解
        
                  
                  
                  
                  
                            
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					257
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            