簡體   English   中英

如何將 CGPoints 列表轉置為 Swift 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM