Arrays 转换;0-4,6,7,9-12“;列出
是否有一个简单的示例或函数将此字符串转换为列表(0,1,2,3,4,6,7,9,10,11,12)。我更喜欢Java或Swift,但我什么都愿意。我知道我可以手动拆分字符串并手动执行此操作,但我只是希望不要在这一条上重新发明一些可以正常工作的东西 以Arrays 转换;0-4,6,7,9-12“;列出,arrays,Arrays,是否有一个简单的示例或函数将此字符串转换为列表(0,1,2,3,4,6,7,9,10,11,12)。我更喜欢Java或Swift,但我什么都愿意。我知道我可以手动拆分字符串并手动执行此操作,但我只是希望不要在这一条上重新发明一些可以正常工作的东西 以0-4,6,7,9-12开头的不是字符串,因为它没有被“.”包围。还有,结果数组应该是什么?是否要将“0-4”转换为0,1,2,3,4?查看字符串的split命令,并使用逗号作为分隔符。首先按“,”拆分,然后对每个元素按“-”拆分,如果有两个结果,则
0-4,6,7,9-12开头的不是字符串,因为它没有被“.”包围。还有,结果数组应该是什么?是否要将“0-4”转换为0,1,2,3,4
?查看字符串的split
命令,并使用逗号作为分隔符。首先按“,”拆分,然后对每个元素按“-”拆分,如果有两个结果,则执行一次for。例如:
(int i = splitted[0]; i < splitted[1] + 1; i++)
(int i=splitted[0];i
这里有一个快速而肮脏的攻击:
import Foundation
let input = "0-4,6,7,9-12"
func expand(string: String) -> [Int] {
return input
.components(separatedBy: ",")
.flatMap { segment -> [Int] in
if segment.contains("-") {
let parts = segment.components(separatedBy: "-").map { Int($0)! }
let (min, max) = (parts[0], parts[1])
return Array(min...max)
}
else {
return [Int(segment)!] // TODO: is error handling necessary?
}
}
}
print(expand(string: input))
修剪第一个和最后一个括号,在,
上拆分,然后将生成的字符串组件映射到IntI。我想我需要更清楚一点,我想把这个“0-4,6,7,9-12”转换成这个0,1,2,3,4,6,7,9,10,11,12好的。。。修剪第一个和最后一个括号,在上拆分,
,通过检查是否有-
,展开-
,并将字符串转换为整数来平面映射生成的字符串组件。这就是我所想的。我只是希望有些东西存在,而不需要我自己来解析。哦,好吧。。。