[英]How to transpose a list of CGPoints into a Swift array
我有一個(列表)以下面的格式返回的 CGPoints(每行都有換行符(“/n”)):
80.0 (return)
100.0 (return)
120.0 (return)
150.0 (return)
我希望使用以下 Swift 語句將上述CGPoint
(Double) (list) 轉換為 Swift (Integer) 數組[80,100,120,140]
: Array(arrayLiteral: list)
:
但首先我必須使用下面的這個 Swift RegEx 語句將換行符(返回"/n"
)轉換為逗號( ","
),這由於某種原因不起作用:
let wantedList = list.replacingOccurrences(of: "\n", with: ",",options: .regularExpression)
任何建議:
a) 我在這個 RegEx 轉換中搞砸了? b) 某種方式進行一次轉置以獲得[80,100,120,140]
形式的所需CGPoints
數組
澄清:
非常感謝:在字符串文字 (""") 之間傳遞原始 CGPoints 時,它就像一個魅力!在我的特殊情況下:我以字符串變量的形式傳遞我的 CGPoints: let list = "(frame.origin .y)" )。我不知道如何在這個列表變量的開頭和結尾插入所需的雙引號,所以我一直把每個 CGPoint 作為一個單獨的數組,即 [80][100] 而不是一個完全填充的數組數組[80,100,120,140]
。
您可以將字符串拆分為行並將子字符串壓縮映射到嘗試初始化 Double 的第一個空格:
let string = """
80.0 (return)
100.0 (return)
120.0 (return)
150.0 (return)
"""
let values = string.split(whereSeparator: \.isNewline)
.compactMap {
Double($0[..<($0.firstIndex(of: " ") ?? $0.endIndex)])
}
print(values) // "[80.0, 100.0, 120.0, 150.0]\n"
如果您想要整數而不是雙精度數,請嘗試查找句點而不是空格:
let integers = string.split(whereSeparator: \.isNewline)
.compactMap {
Int($0[..<($0.firstIndex(of: ".") ?? $0.endIndex)])
}
print(integers) // "[80, 100, 120, 150]\n"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.