【问题标题】:Swift: easy way to substring?Swift:子字符串的简单方法?
【发布时间】:2015-11-18 10:41:11
【问题描述】:

我有一个字符串:

myString = "mystring"

我只想获取前 5 个字符

在 Swift 中最简单的方法是什么?

【问题讨论】:

标签: swift substring


【解决方案1】:
let substring: String = (myString as NSString).substringToIndex(5)

【讨论】:

    【解决方案2】:

    Choppin 的正确答案,但如果你想以纯粹的快速方式(不强制转换为 NS String :

     myString = myString.substringToIndex(advance(myString.startIndex, 5))
    

    【讨论】:

    【解决方案3】:

    使用这些扩展:

    斯威夫特 2.3

    extension String
    {
        func substringFromIndex(index: Int) -> String
        {
            if (index < 0 || index > self.characters.count)
            {
                print("index \(index) out of bounds")
                return ""
            }
            return self.substringFromIndex(self.startIndex.advancedBy(index))
        }
    
        func substringToIndex(index: Int) -> String
        {
            if (index < 0 || index > self.characters.count)
            {
                print("index \(index) out of bounds")
                return ""
            }
            return self.substringToIndex(self.startIndex.advancedBy(index))
        }
    
        func substringWithRange(start: Int, end: Int) -> String
        {
            if (start < 0 || start > self.characters.count)
            {
                print("start index \(start) out of bounds")
                return ""
            }
            else if end < 0 || end > self.characters.count
            {
                print("end index \(end) out of bounds")
                return ""
            }
            let range = Range(start: self.startIndex.advancedBy(start), end: self.startIndex.advancedBy(end))
            return self.substringWithRange(range)
        }
    
        func substringWithRange(start: Int, location: Int) -> String
        {
            if (start < 0 || start > self.characters.count)
            {
                print("start index \(start) out of bounds")
                return ""
            }
            else if location < 0 || start + location > self.characters.count
            {
                print("end index \(start + location) out of bounds")
                return ""
            }
            let range = Range(start: self.startIndex.advancedBy(start), end: self.startIndex.advancedBy(start + location))
            return self.substringWithRange(range)
        }
    }
    

    斯威夫特 3

    extension String
    {   
        func substring(from index: Int) -> String
        {
            if (index < 0 || index > self.characters.count)
            {
                print("index \(index) out of bounds")
                return ""
            }
            return self.substring(from: self.characters.index(self.startIndex, offsetBy: index))
        }
    
        func substring(to index: Int) -> String
        {
            if (index < 0 || index > self.characters.count)
            {
                print("index \(index) out of bounds")
                return ""
            }
            return self.substring(to: self.characters.index(self.startIndex, offsetBy: index))
        }
    
        func substring(start: Int, end: Int) -> String
        {
            if (start < 0 || start > self.characters.count)
            {
                print("start index \(start) out of bounds")
                return ""
            }
            else if end < 0 || end > self.characters.count
            {
                print("end index \(end) out of bounds")
                return ""
            }
            let startIndex = self.characters.index(self.startIndex, offsetBy: start)
            let endIndex = self.characters.index(self.startIndex, offsetBy: end)
            let range = startIndex..<endIndex
    
            return self.substring(with: range)
        }
    
        func substring(start: Int, location: Int) -> String
        {
            if (start < 0 || start > self.characters.count)
            {
                print("start index \(start) out of bounds")
                return ""
            }
            else if location < 0 || start + location > self.characters.count
            {
                print("end index \(start + location) out of bounds")
                return ""
            }
            let startIndex = self.characters.index(self.startIndex, offsetBy: start)
            let endIndex = self.characters.index(self.startIndex, offsetBy: start + location)
            let range = startIndex..<endIndex
    
            return self.substring(with: range)
        }
    }
    

    用法:

    let myString = "mystring"
    let substring = myString.substringToIndex(5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      相关资源
      最近更新 更多