String componentsSeparatedByString 做一次 (String componentsSeparatedByString do one time)


問題描述

String componentsSeparatedByString 做一次 (String componentsSeparatedByString do one time)

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

當我這樣做時:

let ar = mystring.componentsSeparatedByString("=")

我得到:

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

但是我只需要拆分一次,例如 componentsSeparatedByString("=", 1),即可得到:

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

## 參考解法 #### 方法 1:

With Swift 2.1, you can use the split function as follows to do what you want:

let result = string.characters.split("=", maxSplit: 1, allowEmptySlices: true)

Some example code to test this would be:

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"

方法 2:

This should do the job

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]
}

Example:

let rawData = "key=value=value=value=value"
extract(rawData) // > ["key", "value=value=value=value"]

Please note the extract function does an optional array of strings. Infact if the input string does not contain at least an = then nil is returned.

The code has been tested with the Swift 2.1 and Xcode Playground 7.1.1.

Hope this helps.

方法 3:

You're probably going to have to write your own custom code to do that, using either NSScanner or rangeofString:options:range:

EDIT:

Actually, it sounds like the Swift String class's split function, with its maxSplit parameter, will do what you need. Take a look at the link in Preston's answer.

方法 4:

let mystring = "key=value=value=value=value"
let result = split(mystring as String, { $0 == "=" }, maxSplit: 1, allowEmptySlices: true)

result should now be [key, value=value=value=value]

方法 5:

Try this: (tested and working in playground)

var key = str.substringToIndex(str.rangeOfString("=")!.startIndex)
var value = str.substringFromIndex(str.rangeOfString("=")!.startIndex.advancedBy(1))
var resultingArray = [key, value]

(by ArtikeithbhunterLuca AngelettiDuncan CShabarinath PabbaJeremie D)

參考文件

  1. String componentsSeparatedByString do one time (CC BY‑SA 2.5/3.0/4.0)

#split #string #iOS #swift






相關問題

將 xml 元素內容拆分為固定行數 (Split xml element content into fix number of lines)

是否有任何標准說明“aba”.split(/a/) 是否應該返回 1,2 或 3 個元素? (Is there any standard which says if "aba".split(/a/) should return 1,2, or 3 elements?)

Cố gắng gọi các phương thức trong phương thức main với biến được khởi tạo trong các phương thức khác (Trying to call methods in main method with variable initialized in other methods)

使用 Java-Regex 與 Regex 成對拆分多行文本 (Split text with Java-Regex in pairs with Regex over several lines)

如何分割字節數組 (How to split a byte array)

String componentsSeparatedByString 做一次 (String componentsSeparatedByString do one time)

從一行文本中獲取特定數據 (Get specific data from a line of text)

(Python)拆分字符串多個分隔符更有效?1) 使用多重替換方法然後使用拆分 2) 使用正則表達式 ((Python) which is more efficient to split a string multiple separators? 1) Using multiple replace method then using split 2) using regular Expressions)

ValueError:發現樣本數量不一致的輸入變量:[2935848、2935849] (ValueError: Found input variables with inconsistent numbers of samples: [2935848, 2935849])

在 Powershell 中拆分和添加字符串 (Splitting and Adding String in Powershell)

在 python 函數中檢查月份的有效性時出錯 (Error in checking validity of month in python function)

如何將 .obj 文件拆分為其他兩個文件(python、open3d)? (How to split a .obj file into two other files (python, open3d)?)







留言討論