将字符串转换为多位数数组



我正在尝试将字符串转换为数字数组。字符串来自链表,我想在不访问实际节点的情况下获得字符串中的数字。

下面是我的代码:
var list: LinkedList = LinkedList()
list.append(value: 1)
list.append(value: 80)
list.append(value: 3)
list.append(value: 7)
var numbers = list.description.compactMap{$0.wholeNumberValue}

输出:

[HEAD] 1 -> 80 -> 3 -> 7
[1, 8, 0, 3, 7]

我希望它像这样输出:

[1, 80, 3, 7]

但是我不知道怎么做

你想做的事是不可能的。

list是字符串。因此,在添加数字之后,它看起来像这样:

"18037"

没有办法知道它最初是由[1, 80, 3, 7]制成的。可能是[180, 37][18, 0, 37]

你还没有解释为什么你想这样做,但我建议

  1. 没有使用字符串来存储值。在您的情况下,使用Array<Int>
  2. 如果您必须使用字符串,请在值之间使用分隔符,以便您最终使用"1,80,3,7",然后您可以解析它们。(见组件(separatedBy:))

你的代码在每个单独的字符上做一个紧凑的映射(这就是String.compactMap所做的),然后在单个字符上使用wholeNumberValue。不能用这种方式解析多位数。相反,您应该首先基于分隔符拆分字符串,然后解析字符串数组。

编辑(在给问题添加更多信息后):如果你有一个链表,你想要一个数字数组,你不应该先把链表变成字符串。

可以通过迭代List直接创建数组。

如果出于某种原因,您需要解析描述(例如,这是一个赋值,您别无选择),那么请参阅https://stackoverflow.com/a/74746771/3937

要提取字符串中的数字,将其与split(separator:)分开,并使用compactMapInt()来查找那些整数值:

let str = "[HEAD] 1 -> 80 -> 3 -> 7"
let arr = str.split(separator: " ").compactMap { Int($0) }
print(arr)

输出
[1, 80, 3, 7]

Hello Use Only map函数将Int数组转换为String:----


var list = [Int]()
list.append(1)
list.append(80)
list.append(3)
list.append(7)
var numbersString = list.map { String($0) }

print(numbersString)
Output :--- ["1", "80", "3", "7"]

相关内容

  • 没有找到相关文章

最新更新