String componentsSeparatedByString做一次

时间:2015-11-16 21:03:44

标签: ios string swift split

我有一个字符串: let mystring = "key=value=value=value=value"

当我做的时候:

let ar = mystring.componentsSeparatedByString("=")

我得到:

["key", "value", "value", "value", "value"]

但是我需要只拆分一次,比如componentsSeparatedByString("=", 1),以获得:

["key", "value=value=value=value"]

6 个答案:

答案 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)

您可能需要使用NSScannerrangeofString: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)
相关问题