【问题标题】:Separate a string in Swift在 Swift 中分隔字符串
【发布时间】:2017-07-25 02:42:24
【问题描述】:

如何获取冒号后面的值?

示例字符串:“aaa:test , bbb:test , ccc:test”

我必须识别 aaa:bbb:ccc: 才能获得冒号后面的值。

还有一种特殊情况: "aaa:aaa: , bbb:bbb, , ccc:test"

该值可能与变量具有完全相同的单词,也可能不完全相同。此外,该值可能包含逗号。

【问题讨论】:

  • 解决方案无法处理我上面提到的特殊情况

标签: swift string substring


【解决方案1】:

使用 String 的 componenetSeparatedBy 方法。我假设所有的键值都用 " , " 分隔

   let wordsArr = "aaa:test: , bbb:test,a , ccc:test".components(separatedBy: " , ") as [String]

这将为您提供一个包含单词 {[aaa:test:] , [ bbb:test,a] , [ccc:test]} 的数组

    var aaa, bbb, ccc : String?


    for (_,keyValueWords) in wordsArr.enumerated()  {

        var strKeyValuePair = keyValueWords
        if strKeyValuePair.hasPrefix("aaa:") {
            aaa = String(strKeyValuePair.characters.dropFirst(4))
        }
        else if strKeyValuePair.hasPrefix("bbb:"){
            bbb = String(strKeyValuePair.characters.dropFirst(4))

        }else  if strKeyValuePair.hasPrefix("ccc:"){
            ccc = String(strKeyValuePair.characters.dropFirst(4))
        }

    }

    print("aaa=\(aaa!) , bbb=\(bbb!) , ccc=\(ccc!)")

【讨论】:

  • 但我必须认识到值属于哪里。因为有时字符串可能只有“bbb:test, ccc:test”。字符串是动态的。
  • 那么如果字符串是 "bbb:test , ccc:test" ,你想要输出什么?
  • 我会创建5个变量,var aaa, var bbb, var ccc, var ddd, var eee,我要把对应的值放入这些变量中
  • Jose 的解决方案非常好。 @Henry:这是我改进后的解决方案: let elements = "aaa:test, bbb:test, ccc:test".components(separatedBy: ", ") // 元素中 e 的逗号和空格 { print(e.组件(separatedBy:“:”))}
  • 感谢@ngbaanh。我正在编辑我的答案,就像你想象的那样:)
猜你喜欢
  • 1970-01-01
  • 2019-11-15
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
相关资源
最近更新 更多