Swift:拆分逗号分隔的字符串,但如果逗号括在单引号中则不拆分

Swift:拆分逗号分隔的字符串,但如果逗号括在单引号中则不拆分,swift,xml,string,Swift,Xml,String,我的XML文件在单引号之间对字符串进行编码。数组元素以逗号分隔 “你好”,“世界” 通常,提取逗号分隔的值很容易: let result = myString.split{ $0 == "," }.map(String.init) 问题是我不能随意拆分逗号:如果逗号用单引号括起来,它就是文本,否则它就是数组元素分隔符: “你好”,“世界”,“你好,世界” 应产生: ["Hello", "World", "Hello, World"] 注意两件事: 空单引号是不能丢弃的空字符串(它是数组中的一

我的XML文件在单引号之间对字符串进行编码。数组元素以逗号分隔

“你好”,“世界”

通常,提取逗号分隔的值很容易:

let result = myString.split{ $0 == "," }.map(String.init)
问题是我不能随意拆分逗号:如果逗号用单引号括起来,它就是文本,否则它就是数组元素分隔符:

“你好”,“世界”,“你好,世界”

应产生:

["Hello", "World", "Hello, World"]
注意两件事:

  • 空单引号是不能丢弃的空字符串(它是数组中的一个元素)
  • 我不能保证元素之间有空格;用户可能篡改了文件
  • “你好”,“世界”,“你好,世界”

    应产生:

    ["Hello", "World", "Hello, World", ""]
    

    我需要一些方法来区分位于单引号之外的逗号分隔值:“,”更好的方法可能是在单引号之间保留任何内容,但是我不知道怎么做。

    用单引号分隔字符串,然后删除包含单逗号和空格的元素怎么样

    请注意,应该删除结果的第一个/最后一个元素,因为输入以单引号开始和结束,并且在分隔后生成空元素

    var result = myString.components(separatedBy: "'").filter { 
        $0.trimmingCharacters(in: .whitespaces) != ","
    }
    
    result.removeLast()
    result.removeFirst()
    

    用单引号分隔字符串,然后删除包含单逗号和空格的元素怎么样

    请注意,应该删除结果的第一个/最后一个元素,因为输入以单引号开始和结束,并且在分隔后生成空元素

    var result = myString.components(separatedBy: "'").filter { 
        $0.trimmingCharacters(in: .whitespaces) != ","
    }
    
    result.removeLast()
    result.removeFirst()
    

    这看起来更像是CSV格式字符串总是用单引号括起来吗?字符串中可以有一个引号吗?如何转义?是的,字符串总是在单引号内。用户无法使用它们。奇怪,我知道;这是我相信在2003年左右的一个利基项目。@MH175你能详细说明一下这种格式是什么吗
    XML
    没有本机“数组”,恐怕我不能:-(是的,这是本世纪初在自己的硬件上运行的一个完全独特的产品。编码不完全是XML,但非常接近。如果你快速查看它,你很容易被愚弄为它是!这看起来更像是CSV格式。-字符串是否总是用单引号括起来?字符串中是否有单引号?如何d可以转义吗?是的,字符串总是在单引号内。用户不能使用它们。奇怪的是,我知道;这是我相信2003年左右的一个利基程序。@MH175您能详细说明一下这种格式吗?
    XML
    没有本机“数组”,恐怕我不能:-(是的,这是本世纪初在自己的硬件上运行的一款完全独特的产品。编码不完全是XML,但非常接近。如果你快速查看它,你很容易被愚弄到认为是XML!谢谢我更新了我的答案。其中一个问题是它过滤空字符串闭包器——问题是空白;抱歉,我正在尝试使用f。)我想知道如何在中写空格Stackoverflow@MH175元素可以只包含一个逗号而不包含其他内容吗?如果不包含,我的更新答案应该有效。太棒了。感谢您的编辑和帮助。您是如何让Stackoverflow保留空白的?@MH175不客气!我输入了几次
    。谢谢,我更新了我的答案。有一个问题有了这个,它就可以过滤空字符串了--问题是空格;很抱歉,我正试图找出如何在中写入空格Stackoverflow@MH175元素可以只包含一个逗号而不包含其他内容吗?如果不能,我的更新答案应该可以。太棒了。感谢您的编辑和帮助。您是如何让Stackoverflow保留空白的@MH175不客气!我输入了几次