arrays - Swift,处理数组和数据类型(从字符串中拆分字符串)

标签 arrays swift string

<分区>

我几天前才开始使用 Swift,我正在努力处理所有不同的数据类型......

假设我们这样做:

var myarray = ["justin", "steve", "peter"]
var newString = myarray[2]

那么为什么我现在不能只打印“peter”中的“p”?

print(newString[0])

---> 给我一个错误:

“'subscript' 不可用:不能用 Int 下标 String”

在本主题中: [ Get nth character of a string in Swift programming language

它说: “请注意,您永远不能使用从一个字符串创建到另一个字符串的索引(或范围)”

但我无法想象,没有办法处理它......

因为当我这样做时:

var myarray = ["justin", "steve", "p.e.t.e.r"]
var newString = myarray[2]
let a : [String] = newString.componentsSeparatedByString(".")
print(a[2])
  • 然后就可以了。它打印(在本例中)“t”。

那么我如何将它拆分为“SeparatedByString”'Nothing'?

我肯定解决这个问题也会帮助我解决许多其他问题。 我希望我以应该完成的方式发布问题。

感谢您提供任何解决方案或提示:)

最佳答案

实例方法componentsSeparatedByString应用于 String 实例会产生 String 实例数组,即 [String]。数组的元素可以用经典的 Java/C++ 方式进行索引 (let thirdElement = array[2])。

如果你想将你的 String 实例 ("peter") 拆分成单个字符 String 实例的数组,你可以利用 String 实例的 CharacterView 属性,然后将 CharacterView 中的每个 Character 映射回单字符 String 实例

let str = "peter"
let strArray = str.characters.map(String.init(_:)) // ["p", "e", "t", "e", "r"]
let thirdElement = strArray[2] // t

虽然这是一种相当迂回的方式(String -> CharacterView -> [String] -> String),但你最好只看优秀的答案(涵盖直接 String 索引)在@Hamish 挖出的欺骗线程中:

正如下面 Hamish 所指出的,上述可能适用的极端情况是,如果您经常需要在特定索引处访问 String 中的字符,并且喜欢使用数组可用的 O(1) 随机访问(如果您使用不可变的 String:s,则更适用,这样相应的 String 数组只需要生成一次对于每个不可变的 String 实例)。

关于arrays - Swift,处理数组和数据类型(从字符串中拆分字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42235482/

相关文章:

html - 删除(不间断的)字符串中的空格字符

c++ - 将多个 vector 转换为数组,或返回它们 (c++)

java - 如何同时验证字符串值和字符串数组值?也许使用可选语法?

javascript - 我如何用每个字符串之间的逗号分割一个数组?

swift - WKInterfacePicker 标题

swift - XLPagerTabStrip:如何使用 ButtonBarPagerTabStripViewController 为不同的选项卡添加不同的栏按钮

swift - CAGradientLayer 设置为 scenekit 背景 block 场景

java - (添加)圈与叉游戏。 While 循环

c - 指向字符串 C 的指针

c++ - 一个 STL 字符串类可以容纳多少个字符?