我有一个字符串:
let mystring = "key=value=value=value=value"
当我做的时候:
let ar = mystring.componentsSeparatedByString("=")
我得到:
["key", "value", "value", "value", "value"]
但是我需要只拆分一次,比如componentsSeparatedByString("=", 1)
,以获得:
["key", "value=value=value=value"]
答案 0 :(得分:3)
使用Swift 2.1,您可以按照以下方式使用拆分功能来执行您想要的操作:
let result = string.characters.split("=", maxSplit: 1, allowEmptySlices: true)
测试它的一些示例代码是:
let string = "key=value=value=value=value"
let result = string.characters.split("=", maxSplit: 1, allowEmptySlices: true)
print(String(result[0])) // "key"
print(String(result[1])) // "value=value=value=value"
答案 1 :(得分:1)
这应该做的工作
func extract(rawData: String) -> [String]? {
let elms = rawData.characters.split("=", maxSplit: 1).map { String($0) }
guard let
key = elms.first,
value = elms.last
where elms.count == 2 else { return nil }
return [key, value]
}
示例:
let rawData = "key=value=value=value=value"
extract(rawData) // > ["key", "value=value=value=value"]
请注意,extract
函数会执行可选字符串数组。事实上,如果输入字符串不包含至少=
,则返回nil
。
代码已经使用Swift 2.1和Xcode Playground 7.1.1进行了测试。
希望这有帮助。
答案 2 :(得分:0)
您可能需要使用NSScanner
或rangeofString:options:range:
实际上,听起来像Swift String类的split函数及其maxSplit
参数将满足您的需要。看看普雷斯顿回答中的链接。
答案 3 :(得分:0)
let mystring = "key=value=value=value=value"
let result = split(mystring as String, { $0 == "=" }, maxSplit: 1, allowEmptySlices: true)
结果现在应该是[key,value = value = value = value]
答案 4 :(得分:0)
试试这个:(在游乐场测试和工作)
var key = str.substringToIndex(str.rangeOfString("=")!.startIndex)
var value = str.substringFromIndex(str.rangeOfString("=")!.startIndex.advancedBy(1))
var resultingArray = [key, value]
答案 5 :(得分:0)
感谢您的回答,我找到了swift2的工作解决方案:
let mystring = "key=value=value=value=value"
mystring.characters.split(1, allowEmptySlices: true, isSeparator: { $0 == "=" }).map(String.init)