• Swift新手教程3-字符串String


    原创blog,转载请注明出处

    String
    在swfit中,String兼容Unicode的方式。用法和C语言类似。
    注意
     
    在Cocoa和Cocoa touch中,Swift的String,和Foundation中的NSString是兼容的,全部NSString额API都能够调用String类型


    字符串常量
    1、含转义字符:比如 , 等
    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))


    3 toInt()
    返回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 wo

    5 字符串拼接

    非常简答,用加号+ 或者字符串插值

    var str1 = "hello"
    var str2 = "world"
    var str = str1 + str2
    var str2 = "(str1) hwc and the (str2)" //hello hwc and the world

    6 大写和小写转换
    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 world4

    10 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

     


  • 相关阅读:
    MFC基于对话框的程序添加菜单
    iOS远程推送原理及实现过程
    基于SolrCloud的内容搜索和热点推送
    Android 常用抓包工具介绍之Charles
    帮你快速实现全景应用性能可视化
    Android常用抓包工具之TcpDump
    JAVA IO 序列化与设计模式
    《2015中国移动应用性能管理白皮书》欢迎来看
    利用听云Server和听云Network实测Kubernetes和Mesos在高并发下的网络性能
    魅族电商运维之路
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5129489.html
Copyright © 2020-2023  润新知