分割的奇怪行为(分隔符:)

问题描述 投票:0回答:1

为什么这行代码在 Xcode Playground 中有效,但在实际的 Xcode 项目中却无效?

    let first = string.split(separator: "").sorted().joined()
Error: Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')

我想将字符串转换为字符数组,

split(separator: "")
解决了问题,但由于某种原因代码只能在我的操场上工作。 项目和playground中的swift版本都是5.7。

swift xcode split swift-playground
1个回答
0
投票

我不知道为什么你会看到游乐场和常规代码之间的这种差异,但有一个解决方法可以完全回避它。

当您写下

string.split(separator: "")
时,您会得到
Array<Character>
。您只需使用
Array(string)
即可更直接地完成此操作。

事实证明,您“实际上”并不需要字符数组。您只需要一些可以调用 sorted() 的东西,例如

Array(string).sorted()
。你很幸运,因为
String
已经是
Collection<Character>
(这就是数组初始值设定项首先起作用的原因),并且所有
Comparable
值的集合都是可排序的。所以你所需要的只是
string.sorted()
然后,您对结果使用 

.joined()

,将

Array<Character>
转换回
String
。如果您不需要字符之间的分隔符,更直接的方法就是使用
String
初始化器。
所以真的,您所需要的只是:

let result = String(string.sorted())

© www.soinside.com 2019 - 2024. All rights reserved.