如何使用某些条件和分隔符分割字符串

时间:2019-09-27 07:45:44

标签: arrays swift

我有一个[string]类似

  

ABC,JKL,123,12,PQR

     

ABC,“ XY,Z”,654,54,PQR

结果数组应如下所示:

  

[“ ABC”,“ JKL”,“ 123”,“ 12”,PQR],[“ ABC”,“ XY,Z”,“ 654”,“ 54”,“ PQR”]

这是我已经尝试过的方法,但是在第二个元素的情况下,这并没有达到我想要的效果:

content.components(separatedBy: "\n").map{ $0.components(separatedBy: ",") }

1 个答案:

答案 0 :(得分:0)

解决方案背后的想法:

您希望在每次出现,时将字符串拆分为一个数组,以将"中包含的数据作为单个项目考虑。

为此,您必须将全局split functionregex pattern一起使用。

代码示例:

extension String
{
  func splitCommas() -> [Stirng] {
    let pattern = ",(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*\$)" //regex pattern for commas that are not within quotes
    if let regex = try? NSRegularExpression(pattern: pattern, options: []) {
      let string = self as NSString
      return regex.matches(in:inputString, range: NSMakeRange(0, inputString.utf16.count)).map {
        string.substring(with: $0.range).replacingOccurrences(of: ",", with: "") //removing all instances of commas
      }
    }
    return []
  }
}

希望这会有所帮助! ;)

更新

Updated code to more modern example.

还实现了作为String扩展的功能,以实现在所有String变量中的可用性。