You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4中如何将金字塔型字符串转换为Double数组

金字塔字符串转每行Double数组解决方案

我来帮你搞定这个把金字塔型字符串拆分成每行独立Double数组的需求,下面是用Swift实现的完整方案:

完整代码示例

let sampleString = """
55
94 48
95 30 96
77 71 26 67
97 13 76 38 45
07 36 79 16 37 68
48 07 09 18 70 26 06
18 72 79 46 59 79 29 90
20 76 87 11 32 07 07 49 18
27 83 58 35 71 11 25 57 29 85
14 64 36 96 27 11 58 56 92 18 55
02 90 03 60 48 49 41 46 33 36 47 23
92 50 48 02 36 59 42 79 72 20 82 77 42
56 78 38 80 39 75 02 71 66 66 0...
"""

// 1. 按行拆分字符串并过滤空行
let rowStrings = sampleString.components(separatedBy: .newlines).filter { !$0.isEmpty }

// 2. 将每行转换为Double数组
var pyramidDoubleArrays: [[Double]] = []
for row in rowStrings {
    let doubleRow = row.components(separatedBy: .whitespaces)
        .filter { !$0.isEmpty } // 处理连续空格产生的空字符串
        .compactMap { Double($0) } // 转换为Double,自动过滤无效值
    pyramidDoubleArrays.append(doubleRow)
}

// 可选:打印验证结果
for (lineNumber, row) in pyramidDoubleArrays.enumerated() {
    print("第 \(lineNumber + 1) 行:\(row)")
}

步骤详解

  • 按行拆分:使用components(separatedBy: .newlines)把整个多行字符串拆分成单行字符串的集合,再用filter去掉可能存在的空行(比如字符串首尾的空白行)。
  • 每行转Double数组:
    1. 用components(separatedBy: .whitespaces)把单行字符串按空格分割成单个数字字符串;
    2. 再次过滤空字符串,避免连续空格导致的无效元素;
    3. 用compactMap把每个数字字符串转换为Double类型,这个方法会自动跳过转换失败的元素(比如如果字符串里混入了非数字内容)。

注意事项

  • 原字符串中的带前导零的数字(比如07)转换为Double后会变成7.0,这是Double类型的特性,它不保留前导零格式;如果需要保留原始字符串格式,可以把数组类型改成[[String]],去掉compactMap里的Double()转换即可。
  • 如果你的金字塔字符串是其他语言的环境(比如Python),思路是类似的:按行拆分→分割每行数字→转换类型,只是语法略有不同。

内容的提问来源于stack exchange,提问作者emrepun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:22:13