Arrays 在保持拆分字符串的同时以Swift拆分字符串
如何在保留分隔字符串的同时将字符串拆分为数组 执行此操作可以拆分字符串,但不会保留分隔符子字符串: “我的名字”。组件(以“-”分隔->[“我的”,“名字”] 这就是我想要实现的目标: 例1:“我的名字”。someSplitFunc(以“-”分隔)->[“我的-”,“名字”] 例2:“This-is-a-句子”。someSplitFunc(分隔符:“-”)->[“This-”, “is-”、“a-”、“句子”]Arrays 在保持拆分字符串的同时以Swift拆分字符串,arrays,swift,string,algorithm,components,Arrays,Swift,String,Algorithm,Components,如何在保留分隔字符串的同时将字符串拆分为数组 执行此操作可以拆分字符串,但不会保留分隔符子字符串: “我的名字”。组件(以“-”分隔->[“我的”,“名字”] 这就是我想要实现的目标: 例1:“我的名字”。someSplitFunc(以“-”分隔)->[“我的-”,“名字”] 例2:“This-is-a-句子”。someSplitFunc(分隔符:“-”)->[“This-”, “is-”、“a-”、“句子”] 另外,没有一种本地的Swift方法可以完成您想要的任务。您将需要实现自己的拆分方法来
另外,没有一种本地的Swift方法可以完成您想要的任务。您将需要实现自己的拆分方法来扩展
集合
。大概是这样的:
您可以尝试以下方法:
var str = "This-is-a-sentence"
var separateList = str.components(separatedBy: "-")
for (index, _) in separateList.enumerated() {
if index < separateList.count - 1 {
separateList[index].append("-")
}
}
print(separateList)
var str=“这是一句话”
var separateList=str.components(以“-”分隔)
对于separateList.enumerated()中的(索引,u){
如果索引
只需使用下面的扩展名即可
extension String {
func componentSeparate(by: String) -> [String] {
var out: [String] = [String]()
var storeStr = ""
for str in Array(self) {
if by.contains(str) {
out.append(storeStr)
storeStr.removeAll()
continue
}
storeStr.append(str)
}
return out
}
func componentSeparated1(by: String) -> [String] {
var separateList: [String] = componentSeparate(by: by).map { "\($0)\(by)" }
separateList[separateList.count-1].removeLast(by.count)
return separateList
}
func componentSeparated2(by: String) -> [String] {
if self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { return [] }
var separateList: [String] = componentSeparate(by: by).map { "\($0)\(by)" }
separateList[separateList.count-1].removeLast(by.count)
return separateList
}
func componentSeparated3(by: String) -> [String] {
if self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { return [] }
var separateList: [String] = componentSeparate(by: by).map {"\($0)\(by)"}.filter {$0 != "-"}
separateList[separateList.count-1].removeLast(by.count)
return separateList
}
func componentSeparated4(by: String) -> [String] {
if self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { return [] }
let separateList: [String] = componentSeparate(by: by).map {"\($0)\(by)"}.filter {$0 != "-"}
return separateList
}
}
print("This-is-a-sentence-".componentSeparated1(by: "-"))
print("".componentSeparated2(by: "-"))
print("This-is-a-sentence-".componentSeparated3(by: "-"))
print("This-is-a-sentence-".componentSeparated4(by: "-"))
输出:
["This-", "is-", "a-", "sentence-", ""]
[]
["This-", "is-", "a-", "sentence"]
["This-", "is-", "a-", "sentence-"]
这将导致“-”是一个空的字符串,如果没有找到任何“--”,则会导致相同的字符串加上“--”。非本地
Swift
。这对OP来说可能并不重要,但对未来的读者来说值得一提。顺便说一下,你的方法没有返回<代码> [“这个-”,“是-”,“A -”,“句子-”] /<代码>注意,这将需要基础。不是土生土长的斯威夫特。如果原始字符串为空,这也会导致[“”]
的结果。如果separateList.index.dropLast()中的索引字符串以“-”结尾,则还会向结果中添加一个空字符串。{
extension String {
func componentSeparate(by: String) -> [String] {
var out: [String] = [String]()
var storeStr = ""
for str in Array(self) {
if by.contains(str) {
out.append(storeStr)
storeStr.removeAll()
continue
}
storeStr.append(str)
}
return out
}
func componentSeparated1(by: String) -> [String] {
var separateList: [String] = componentSeparate(by: by).map { "\($0)\(by)" }
separateList[separateList.count-1].removeLast(by.count)
return separateList
}
func componentSeparated2(by: String) -> [String] {
if self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { return [] }
var separateList: [String] = componentSeparate(by: by).map { "\($0)\(by)" }
separateList[separateList.count-1].removeLast(by.count)
return separateList
}
func componentSeparated3(by: String) -> [String] {
if self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { return [] }
var separateList: [String] = componentSeparate(by: by).map {"\($0)\(by)"}.filter {$0 != "-"}
separateList[separateList.count-1].removeLast(by.count)
return separateList
}
func componentSeparated4(by: String) -> [String] {
if self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { return [] }
let separateList: [String] = componentSeparate(by: by).map {"\($0)\(by)"}.filter {$0 != "-"}
return separateList
}
}
print("This-is-a-sentence-".componentSeparated1(by: "-"))
print("".componentSeparated2(by: "-"))
print("This-is-a-sentence-".componentSeparated3(by: "-"))
print("This-is-a-sentence-".componentSeparated4(by: "-"))
["This-", "is-", "a-", "sentence-", ""]
[]
["This-", "is-", "a-", "sentence"]
["This-", "is-", "a-", "sentence-"]