美文网首页iOS Developer
Swift3.0 实用的截取字符串方法封装

Swift3.0 实用的截取字符串方法封装

作者: GerryZhu | 来源:发表于2017-03-27 09:43 被阅读0次

使用swift开发,一定会对 String 的截取感到不适应,本文通过类拓展的方式给String 类型的字符串增加了一些截取方法,简单实用

先看看实用效果,有没有很简单!!!

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let str = "hello,swift!"

        print(str[1])  //打印结果:  e
        print(str[2,4])//打印结果:  llo
        print(str[1...2])//打印结果:  el
        print(str.subString(to: 3))//打印结果:  hel
        print(str.subString(from: 3))//打印结果:  lo,swift!
        print(str.subString(location: 1, length: 3))//打印结果:  ell

    }

实现方法

extension String {

    /// 截取 from 位置后的所有字符,from 超过字符串长度,返回空字符 ""
    func subString(from: Int) -> String {
        if from >= self.characters.count {
            return ""
        }
        let rang = self.index(startIndex, offsetBy: from)..<self.endIndex
        return self[rang]
    }

    /// 从起始位置开始截取到 to 位置的所有字符,to 超过字符串长度,返回整个字符串
    func subString(to: Int) -> String {
        if to >= self.characters.count {
            return self;
        }
        let rang = self.startIndex..<self.index(startIndex, offsetBy: to)
        return self[rang]
    }

    /// 截取 location 位置后的 length位长度的字符,location 超过字符串长度,返回空字符 "";
    /// location + length 超过字符串长度,返回 location 位置后的所有字符
    func subString(location:Int, length:Int) -> String {
        if location >= self.characters.count {
            return ""
        }
        if location + length >= self.characters.count {
            return self
        }
        let locationIndex = self.index(startIndex, offsetBy: location)
        let range = locationIndex..<self.index(locationIndex, offsetBy: length)
        return self[range]
    }

    /// 下标的方式截取字符串;  string[1,3] 截取 1~3位的字符串
    subscript(begin: Int, end:Int) -> String {
        if begin >= self.characters.count {
            return ""
        }
        if end >= self.characters.count {
            return subString(from: begin)
        }
        let range = self.index(startIndex, offsetBy: begin)...self.index(startIndex, offsetBy: end)
        return self[range]  
    }

    /// 下标的方式截取字符串;  string[1...3] 截取 1~3位的字符串
    subscript(range:ClosedRange<Int>) -> String {
        if range.lowerBound >= self.characters.count {
            return ""
        }
        if range.upperBound >= self.characters.count {
            return subString(from: range.lowerBound)
        }
        let range = self.index(startIndex, offsetBy: range.lowerBound )...self.index(startIndex, offsetBy: range.upperBound)
        return self[range]
    }
    /// 下标的方式截取字符串;  string[1]  截取 位置为1 处的字符
    subscript(idx: Int) ->String {
        return subString(location: idx, length: 1)
    }
}

如有疑问,欢迎评论交流!

相关文章

  • Swift3.0 实用的截取字符串方法封装

    使用swift开发,一定会对 String 的截取感到不适应,本文通过类拓展的方式给String 类型的字符串增加...

  • Swift字符串截取

    NSString类型的字符串截取 NSString类型的字符串截取方法,同于OC语言的字符串截取方法,不能修改字符...

  • mac 终端常见命令

    切换shell 截取字符串 shell字符串的截取 shell字符串的截取 Shell脚本8种字符串截取方法总...

  • iOS 字符串常见处理

    一、截取字符串 iOS “字符串” 的几种常见的截取方法(随时更新)iOS截取字符串,分割字符串iOS 截取字符串...

  • Swift 4.0 字符串截取,拼接,字符串富文本显示

    字符串截取,调用系统方法 字符串拼接 字符串富文本 字符串截取,调用系统方法 swift 3.2 版本:

  • 2018-06-13

    1、 以下关于字符串截取,描述错误的是 C A、Java中的字符串截取方法进行了重载B、对于字符串截取方法,sub...

  • JAVA之UUID去掉横线

    方法一(字符串截取) 方法一 方法二(字符串分割) 方法二

  • 截取字符串

    截取字符串 截取字符串有如下方法 [string substringToIndex:7];//截取掉下标7之后的字...

  • Swift截取字符串

    1.使用Range截取字符串 2.使用subString提供的方法截取字符串

  • iOS | NSString截取字符串中相同字符之间的字符串

    项目中有需求截取字符串,字符串中有两个相同的字符,要获取的新字符串就在这两个相同字符串之间。 封装了一个简单的方法...

网友评论

    本文标题:Swift3.0 实用的截取字符串方法封装

    本文链接:https://www.haomeiwen.com/subject/mbilottx.html