Swift 4+如何分割字符串行且不忽略空行?
在Swift 4+中分割字符串并保留空行的解决方案
这个问题我之前也踩过坑!Swift 里的split方法默认会忽略空的子序列,这就是为什么你用split只能得到3个元素的原因。下面给你两种简单有效的方法,都能得到包含空字符串的4个元素结果:
方法一:使用components(separatedBy:)(Foundation框架)
这个方法是Foundation提供的,它会严格按照分隔符分割字符串,自动保留空行对应的空字符串,用法很直接:
let originalStr = "1\n2\n\n3" let lines = originalStr.components(separatedBy: "\n") // lines 的值为 ["1", "2", "", "3"],完美符合你的需求
如果需要兼容不同的换行格式(比如Windows的\r\n),可以换成CharacterSet.newlines,适配性更强:
let lines = originalStr.components(separatedBy: .newlines)
方法二:修改split的参数(Swift标准库)
如果你更倾向于用Swift标准库的split方法,只需要把默认的omittingEmptySubsequences参数设为false,就能关闭空序列的忽略逻辑:
let originalStr = "1\n2\n\n3" // split 返回的是 Substring 数组,若需要 String 类型可以转一下 let lines = originalStr.split(separator: "\n", omittingEmptySubsequences: false).map(String.init) // lines 的值同样是 ["1", "2", "", "3"]
两种方法都能解决你的问题,选哪个看你是否依赖Foundation框架啦~
内容的提问来源于stack exchange,提问作者Ondrej Rafaj
相关产品推荐
相关产品推荐

