当前位置: 首页 > 面试题库 >

Swift:如何从字符的开始到最后一个索引获取子字符串

曾绯辞
2023-03-14
问题内容

我想学习最好/最简单的方法,将一个字符串转换为另一个字符串,但只有一个子集,从一个字符的开头到最后一个索引

例如,将。什么样的代码片段会做到这一点,并且最快捷?(我希望这不会引起争论,但是我找不到关于如何在Swift中处理子字符串的好课程。


问题答案:

最好的方法是substringToIndex结合使用endIndex属性和advance全局功能

var string1 = "www.stackoverflow.com"

var index1 = advance(string1.endIndex, -4)

var substring1 = string1.substringToIndex(index1)

寻找从背面开始的字符串

使用rangeOfString并设置options.BackwardsSearch

var string2 = "www.stackoverflow.com"

var index2 = string2.rangeOfString(".", options: .BackwardsSearch)?.startIndex

var substring2 = string2.substringToIndex(index2!)

没有扩展,纯真的Swift

雨燕2.0

advance现在是的一部分,Index称为advancedBy。您这样做:

var string1 = "www.stackoverflow.com"

var index1 = string1.endIndex.advancedBy(-4)

var substring1 = string1.substringToIndex(index1)

斯威夫特3.0

您无法调用advancedBya,String因为它具有可变大小的元素。您必须使用index(_, offsetBy:)

var string1 = "www.stackoverflow.com"

var index1 = string1.index(string1.endIndex, offsetBy: -4)

var substring1 = string1.substring(to: index1)

许多事情已经重命名。这些案件都写在驼峰,startIndex成了lowerBound

var string2 = "www.stackoverflow.com"

var index2 = string2.range(of: ".", options: .backwards)?.lowerBound

var substring2 = string2.substring(to: index2!)

另外,我不建议强制展开index2。您可以使用可选的绑定或map。就个人而言,我更喜欢使用map

var substring3 = index2.map(string2.substring(to:))

斯威夫特4

Swift 3版本仍然有效,但是现在您可以使用带有索引范围的下标:

let string1 = "www.stackoverflow.com"

let index1 = string1.index(string1.endIndex, offsetBy: -4)

let substring1 = string1[..<index1]

第二种方法保持不变:

let string2 = "www.stackoverflow.com"

let index2 = string2.range(of: ".", options: .backwards)?.lowerBound

let substring3 = index2.map(string2.substring(to:))


 类似资料:
  • 问题内容: 我有 使用JavaScript,如何获得最后五个字符或最后一个字符? 问题答案: 不要使用。请使用此方法,因为它与跨浏览器兼容(请参阅IE)。

  • 问题内容: 如何获取字符串的最后一个字符? 问题答案: 代码: 输出:

  • 我有一个字符串: 我想从中提取,即从右边的最后一个或第一个之后的子字符串。 有人能提供一些帮助吗?

  • 问题内容: 我需要将字符串的最后4个字母分开。我该如何分开?字符串的长度在变化。 例如: 问题答案: 一个解决方案是 或上 代码是Swift 2 斯威夫特3: 在Swift 3中,第一个解决方案的语法已更改为 斯威夫特4: 在Swift 4中,它变得更加方便: 结果的类型是一种在许多情况下表现为a 的新类型。但是,如果子字符串应该离开创建它的作用域,则必须创建一个新实例。

  • 问题内容: 如果我有字符串“ 12121211122”,并且想获取最后3个字符(例如“ 122”),那么Go中可以吗?我已经看过包裹了,没有看到类似的东西。 问题答案: 您可以在字符串上使用切片表达式来获取最后三个字节。 或者,如果您使用的是unicode,则可以执行以下操作: 检查Go和Slice Tricks中的 字符串,字节,符文和字符。

  • 问题内容: 我曾经在JavaScript中这样做: Swift没有此功能,如何做类似的事情? 问题答案: 编辑/更新: Xcode 11•Swift 5.1或更高版本 用法: 不区分大小写的样本 正则表达式样本