swift中字符串的处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lin1109221208/article/details/51727964

今天总结下swift中对于字符串的操作,记录下工作中常用的。。。

1、字符串的声明

 关于字符串的声明可以标注类型,也可以不标注,如

//        1、字符串声明
        var emptyStr : String = " "//声明一个空字符串
        var str : String = "Hello World"//定义变量类型为String
        var str1 = "Hello World"//未定义变量类型,在swift中会根据值推测变量的类型为String
       
        
        //判断字符串是否为空,若为空则为true,否则为false
        let bool : Bool = emptyStr.isEmpty
判断字符串是否为空,除了上面这个方法,还有一种笨办法:在定义变量类型时允许变量为空,则可以使用 xx == nil 的方式来判断

 var str3 : String?
        if str3 == nil {
            str3 = "Hello World"
        }

其中代码中的“ ? ”表示该变量是一个可选值Optional,其值可以为nil,也可以有具体的值。一旦声明为可选值,如果没有指定值,默认是nil,可用if进行该字符串是否有值的判断


2、字符串的拼接

字符串的连接主要有两种方式:一种是直接在字符串后面添加字符串,另一种是将字符串数组拼接成一个字符串

//        2、字符串拼接
        let str = "Hello"
        let str2 = "world"
        let str3 = str + str2//利用+直接将字符串拼接在一起,比较直接
        
        let array : [String] = ["aaa","bbb", "ccc"]
        let arrayStr : String = array.joinWithSeparator("/")//将数组中的元素拼接成字符串
其拼接的结果如下
str3 Helloworld
arrayStr aaa/bbb/ccc


3、字符串的截取

字符串的截取是利用substringFromIndex、substringToIndex、substringWithRange这三个函数

<pre name="code" class="objc">//        3、字符串的截取
        let str = "Hello World"
        //substringFromIndex:是包括当前下标的值开始截取,到字符串最后停止
        let ns1=str.substringFromIndex(str.startIndex.successor())
        
        //substringToIndex:是截取到当前下标为止
        let ns2=str.substringToIndex(str.endIndex.predecessor())
        
        //substringWithRange: 截取指定范围内的字符串
        let start = str.startIndex.advancedBy(2)
        let end = str.startIndex.advancedBy(7)
        let ns3=str.substringWithRange(Range(start: start, end: end))
</pre><p></p><pre>
截取的结果为:

ns1  ello World
ns2  Hello Worl
ns3  llo W

4、字符串的访问

字符串的访问可以通过下标来访问。主要有四种方式,分别为:

    startIndex:表示字符串开始的下标

    endIndex:表示字符串结束的下标

    successor:用于上面两个下标调用,表示在原本下标的基础上+1,也就是下一个

    predecessor:也是用于上面两下标调用,表示在原本下标的基础上-1,也就是前一个或上一个

 <pre name="code" class="objc"> let str = "Hello World"
        
        /*startIndex代表字符串开始的下标*/
        str[str.startIndex]
        
        /*endIndex代表字符串结束的下面    predecessor代表前一个*/
        str[str.endIndex.predecessor()]
        
        /*successor表示继续的也就是下一个*/
        str[str.startIndex.successor()]
        
        /*字符串不支持直接访问下标,需要使用advance函数转化,如果访问的下标超出字符串就会发出运行时错误*/
        let index = str.startIndex.advancedBy(7)
        str[index]

 
 

特别注意的是,在swift中的字符串不能直接访问下标,需要通过advance函数将下标值转换,主要原因是OC中下标的类型是Int,而在swift中,下标的类型是Index类型

运行结果如下:

str[str.startIndex] H
str[str.endIndex.predecessor()] d
str[str.startIndex.successor()] e
str[index] o

5、字符串的比较

字符串的比较主要包括三个方面:是否相等用“==”,xxx字符串开头是否包含xx用hasPrefix,xxx字符串结尾是否包括xx用hasSuffix。代码如下:

// 5 、字符串的比较
        let str = "Hello"
        let str1 = "World"
          //比较两个字符串是否相等
        if str1 == str {
            print("str1 和 str 相等")
        }else{
            print("str1 和 str 不相等")
        }
    
            
            //判断字符串开头是否包含he
            if(str.hasPrefix("He")) {
                print("str 开头包含 He");
        }
        
                //判断字符串结尾是否包含ng
        if(str1.hasSuffix("ld")) {
            print("str1 结尾包含 ld");
        }


6、其他操作

字符串的其他操作是指过滤和替换

//        6、其他操作
        //过滤单个字符
        var url = "http://cnews.chinadaily.com.cn/2016-06/21/content_25783045.htm"
        var filtered = url.stringByReplacingOccurrencesOfString("/", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
        print("filtered \(filtered)")
        
        //替换 将/替换为?
        url = "http://cnews.chinadaily.com.cn/2016-06/21/content_25783045.htm"
        
         filtered = url.stringByReplacingOccurrencesOfString("/", withString: "?", options: NSStringCompareOptions.LiteralSearch, range: nil)
        print("filtered \(filtered)")
其结果为:

filtered http:cnews.chinadaily.com.cn2016-0621content_25783045.htm
filtered http:??cnews.chinadaily.com.cn?2016-06?21?content_25783045.htm



   

猜你喜欢

转载自blog.csdn.net/lin1109221208/article/details/51727964