swift - 如何使用 Range Swift 3 打印字符串

标签 swift string

我是 Swift 编程的新手。我有一个关于 Swift String 的问题。我有一个显示来自 JSON 的数据的 TableView。片段下方:

cell.labelFOStat.text = ("F/O Status   : \(subString(string: featureStr!, startIndex: 0, endIndex: 11))")

    cell.labelHKStat.text = ("H/K Status   : \(subString(string: featureStr!, startIndex: 12, endIndex: 23))" )

    cell.labelID.text = ("ID       : \(subString(string: featureStr!, startIndex: 24, endIndex: 25))")

    cell.labelTime.text = ("Time     : \(subString(string: featureStr!, startIndex: 26, endIndex: 30))")

    cell.labelExplanation.text = ("Explanation : \(subString(string: featureStr!, startIndex: 31, endIndex: 62))")

    cell.labelFOAdult.text = ("F/O Adult : \(subString(string: featureStr!, startIndex: 63, endIndex: 64))")

    cell.labelFOChild.text = ("F/O Child : \(subString(string: featureStr!, startIndex: 65, endIndex: 66))")

    cell.labelHKAdult.text = ("H/K Adult : \(subString(string: featureStr!, startIndex: 67, endIndex: 68))")

    cell.labelHKChild.text = ("H/K Child : \(subString(string: featureStr!, startIndex: 69, endIndex: (featureStr?.characters.count)! - 1))")

substring 是:

func subString(string:String, startIndex: Int, endIndex: Int) -> String {
    let index = string.index((string.startIndex), offsetBy: startIndex)
    let endIndex = string.index((string.startIndex), offsetBy: endIndex)

    let t:String?

    let str = string[index...endIndex]

    return str
}

这是我的 JSON 片段:

[{
  "zinr": "1006",
  "features": "Occupied    Sleep Out   0115:15asd                             0 0 0 0",
  "etage": 10,
  "bezeich": "Deluxe King",
  "house-status": 1,
  "zistatus": 4,
  "userinit": "01",
  "nr": 1
}, {
  "zinr": "709",
  "features": "Vacant      Occupied    0112:46tes                             0 0 0 0",
  "etage": 7,
  "bezeich": "Superior King",
  "house-status": 1,
  "zistatus": 0,
  "userinit": "01",
  "nr": 1
}]

想知道如何使用字符串 range 获取键 "features"。可以只制作没有开始或结束索引的 range 参数吗? .我读过 this但它仍然让我有点困惑。提前致谢。

最佳答案

最方便(虽然不是最有效)的方法是对 String 进行扩展:

extension String {
    subscript(range: CountableRange<Int>) -> String {
        let startIndex = self.index(self.startIndex, offsetBy: range.lowerBound)
        let endIndex = self.index(self.startIndex, offsetBy: range.upperBound)
        return self[startIndex..<endIndex]
    }

    subscript(range: CountableClosedRange<Int>) -> String {
        let startIndex = self.index(self.startIndex, offsetBy: range.lowerBound)
        let endIndex = self.index(self.startIndex, offsetBy: range.upperBound)
        return self[startIndex...endIndex]
    }
}

// Both print Hello
let str = "Hello world"
print(str[0..<5])
print(str[0...4])

关于swift - 如何使用 Range Swift 3 打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670672/

相关文章:

javascript - 从变量中删除 char 时出错

objective-c - swift 2 : no delegate callbacks for push notifications as opposed to objective-c

java - java中的句子反转

swift - flutter 将 Objective C 项目迁移到 Swift 项目。使用swift插件时出错

ios - 为什么 Swift 自定义 UIActivity 图标图像不显示,而 Objective-C 正确显示?

android - 自动字符串资源翻译

string - 如何在 Bash 或 Unix shell 中检查字符串中的第一个字符?

JavaScript 正则表达式中额外可能的字符

swift - 在 Swift 中将十进制值设置为 0

ios - 显示游戏中心排行榜无法快速工作