向后迭代字符串字符的好方法是什么?

2024-04-18

向后迭代字符串中的字符的最 Swiftian 方法是什么?即喜欢for ch in str,仅相反?

我想我一定错过了一些明显的东西,因为我现在能想到的最好的办法是:

    for var index = str.endIndex; 
            index != str.startIndex; 
            index = index.predecessor() {
        let ch = str[index.predecessor()]
        ...
    }

我意识到“什么是最好的……”可能被归类为主观的;我想我真正想要的是一种简洁但可读的方式来做到这一点。

编辑:虽然reverse()可以工作并且很简洁,但与上面的相比,看起来这可能相当低效,即看起来它实际上并不是向后迭代,而是创建字符串中字符的完整反向副本。比如说,如果您要查找的内容通常是 10,000 个字符的字符串末尾的几个字符,那么这会比我原来的要糟糕得多。因此,我暂时保留这个问题以吸引其他方法。


The reversed函数反转aC: CollectionType并返回一个ReversedCollection:

for char in "string".characters.reversed() {
  // ...
}

如果你发现reversed预反转字符串,尝试:

for char in "string".characters.lazy.reversed() {
  // ...
}

lazy返回一个延迟计算的序列(LazyBidirectionalCollection) then reversed()返回另一个LazyBidirectionalCollection这是反向访问的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向后迭代字符串字符的好方法是什么? 的相关文章

  • Swift Firebase - 如何在使用 queryOrdered(byChild: ).queryEqual(toValue: ) 时获取所有 k/v

    root reviews postABC postId reviewXYZ I want everything under this reviewUID buyerUID 01010 text fast shipping responseT
  • 如何使用存储在 Cocoa Touch 框架中的 Localized.strings?

    我想为 CocoaTouch 框架添加多语言支持 问题 可本地化的字符串我创建的文件仅被使用NSLocalizedString当它是主应用程序及其目标的一部分时 我想将其存储在框架内以将事物分开 我怎样才能使用可本地化的字符串当放置在 Co
  • 在 Firebase 中为 TextView Swift 保存字体和大小的方法是什么

    我想在 Firebase 中保存 Swift 中 TextView 的字体 大小和对齐方式 这样我就可以在另一个视图中调用它 我只能将颜色保存在 Firebase 中 这是显示我是如何做到的的代码 IBAction func SendBtn
  • 具有透明背景的 Swift 模态视图控制器 [重复]

    这个问题在这里已经有答案了 我知道这个话题很受欢迎 但我在编程语言中遇到了一些问题 事实是我仍然不明白我把代码放在哪里 好吧 我就来说说整个案子 我正在尝试制作一个与正常情况稍有不同的模态 Swift 通过单击按钮 ViewControll
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • 如何快速防止标签中出现孤儿?

    我有一个可以有一两行的标签 如果它有两行 我希望第二行至少有两个 或者可能三个 单词 而不仅仅是一个 关于如何使用 swift 实现这一点有什么想法吗 提前致谢 Daniel 编辑 我删除了我愚蠢的第一个想法 这些想法并没有真正的帮助 好吧
  • ExpandableLabel iOS 中的“少看”

    我正在使用第三方库可扩展标签 https github com apploft ExpandableLabel实施一个see more特征 我正在寻找仅快速的解决方案 其中包含标签中的文本而不是按钮中的文本 因此这可以完美地工作 添加库并更
  • CIAdditionCompositing 给出不正确的效果

    我正在尝试通过平均其他几个图像来创建图像 为了实现这一点 我首先将每个图像变暗 其系数等于我平均的图像数量 func darkenImage by multiplier CGFloat gt CIImage let divImage CII
  • SwiftUI - 从 NSObject 继承的 ObservableObject 在 iOS 13 中不会更新

    我知道 这是 无法在 iOS XX 中工作 问题之一 但我完全陷入困境 所以我有一个ObservableObject继承自的类NSObject 因为我需要听委托方法UISearchResultsUpdating class SearchBa
  • ArraySlice 中的 Swift [重复]

    这个问题在这里已经有答案了 在数组上使用 prefix 方法后 我得到了所谓的 arraySlice 我怎样才能将其转换为数组 我试图从 FacebookGraphApi 获取 Ints 然后请求前 3 个 前缀 3 并尝试将它们添加到新数
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C
  • 使用prepareForSegue传递数据

    我试图将数据从viewController 1传递到viewController2 我有2个按钮和1个segue 因此有一个segue标识符 这2个按钮 按下时每个按钮应显示 1个标签用于显示标题 1个textView用于显示定义 我很难显
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • Swift 中的 viewWillLayoutSubviews

    我正在尝试翻译SKScene scene GameScene sceneWithSize skView bounds size 进入 swift 但我收到错误 sceneWithSize 不可用 使用对象构造 SKScene size 我在
  • 二元运算符“/”不能应用于两个(Int)操作数[重复]

    这个问题在这里已经有答案了 我得到了Binary operator cannot be applied to two Int operands当我将以下代码放入 Xcode 中的 Swift Playground 时出错 func sumO
  • 在 UITableViewController 中重新排序行后 UI 更新不正确

    因此 我对表中的行重新排序 用户界面最终结果不正确 场景如下 表内容原文 a b c d e 如果我移动第 0 行 当前a 到第 4 行 当前e 我看到的最终结果是 c d e a a 一些背景 该表正在读取 Realm 对象的列表 我确认
  • 循环多个 UIAlertController

    在某些情况下 我的应用程序需要显示多个警报消息 错误消息在启动时收集 并且需要一次向用户显示一条 当第一个被确认后 应该呈现下一个 问题在于 显然 它们都试图同时执行 有没有一种聪明的方法可以同步执行此操作 这是一些简单描述我想要做的事情的
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • 检查 Swift 中关联类型是否符合协议

    在类似情况下 如何检查对象是否符合 可表示 协议 protocol Representable associatedtype RepresentType var representType RepresentType get set cla
  • 领域:结果 和列表

    是否可以转换Results

随机推荐

  • 暗淡和公共有什么区别?

    今天提出了一个关于范围的问题 这引起了我的思考 我一直了解 VBScript 范围以及如何声明全局和本地 我突然想到我从来没有使用过Public变量但倾向于使用Dim相反 在全局声明时 据我了解Dim是相同的Public 但如果是这样的话
  • PHP 密码的正则表达式 [重复]

    这个问题在这里已经有答案了 我在网上找到了一个脚本 它有一个 JavaScript 中的密码正则表达式 我仍然想使用它 但为了更安全 我也想使用 PHP 来验证我的密码 但我对正则表达式毫无用处 要求 必须至少 8 个字符 必须包含至少 1
  • 使用 sass 3 自定义 Bootstrap 5 颜色时出现无效 CSS 值错误

    我想用 SASS 更改 bootstrap 默认主题颜色 问题是当我更改颜色并编译时 它会给我无效的 CSS 值错误 我已阅读文档并在 YouTube 上看到了一些教程 但我看不出问题出在哪里 我正在使用 bootstrap 5 1 0 s
  • 此应用程序是否使用广告标识符 (IDFA)? - AdMob 6.8.0

    我目前正在将我的应用程序上传到 App Store Apple 询问我此应用程序是否使用 IDFA 我正在使用最新的 Admob SDK 或 6 8 0 但我不知道它是否使用 IDFA 如果使用 我应该点击哪些复选框 Image http
  • 调用重写的虚函数而不是重载

    假设我有这部分代码 include
  • 从 python 3 脚本构建适用于 Windows 的 .exe

    我想为 python 3 脚本构建一个可执行文件 导入 pyqtgraph 使用 pyqt5 导入 theano 和 pymc3 还导入 numpy scipy sys os 打开一个用 qt 设计器制作并存储在 ui 文件中的简单 GUI
  • 使用 Kotlin 创建新目录,Mkdir() 不起作用

    var filename blesson txt var wallpaperDirectory File sdcard Wallpaper wallpaperDirectory mkdirs val outputFile File wall
  • 在 D3.js 中绘制多条线

    到目前为止 我一直在使用循环将线条元素添加到 D3 可视化中 但这似乎不符合 API 的精神 假设我有一些数据 var data time 1 value 2 value2 5 value3 3 value4 2 time 2 value
  • 如何从仅包含键和键值对列表的列表创建字典(Python)?

    这是这个问题的延伸 如何在 Python 中拆分列表中的字符串以创建键值对 https stackoverflow com questions 12739911 how to separate string and create a key
  • 如何在 ASP.NET MVC Web 应用程序中使用 Ninject?

    我创建了一个新的 MVC Web 应用程序 并且引用了 Ninject dll Ninject Web Common dll 和 Ninject Web MVC dll Global asax cs public class MvcAppl
  • Application.Ontime 取消无法调用对象“Application”的“ONTIME”方法

    I am 完全地失去了所以任何帮助将不胜感激 我试图取消打开工作簿时触发的 2 个计划事件 并使用 Application Ontime 方法重复 我知道要终止 OnTime 计划循环 您必须提供计划运行的确切时间 并且拥有多个 Appli
  • 在 doxygen 中使用 SVG

    我正在尝试将 SVG 添加到我的 doxygen 文档中 第一次尝试是使用 image blabla svg 这有点工作 但是 SVG 包含另一个 png 参考 并且 内部 png 未显示 这在 Chrome 上有效 但即使在 Firefo
  • .NET 通过 TLS 1.2 删除客户端证书

    您好 似乎这个问题的某种形式已经被问过一百万种不同的方式 但许多人没有答案 或者答案不适用于我 我们有一个微不足道的小型 NET 服务 可以调用目前仅支持 TLS 1 2 的第 3 方 API var requestHandler new
  • Spring错误 - springframework.web.client.HttpClientErrorException:404 Not Found

    我正在尝试使用将对象传递给另一个类Spring 我不确定我使用的术语是否正确 我对Spring 这边走 TestServicesUtils getTemplate postForLocation http serverConfig port
  • PHP语句同步或异步

    早上好 我想知道 PHP 准备语句是同步还是异步 例如 req1 UPDATE statement1 connection gt prepare req1 statement1 gt execute req2 SELECT statemen
  • 锁定一个物体

    我经常看到这样的代码此处显示 http msdn microsoft com en us library ak9w5846 aspx 即分配一个对象 然后将其用作 锁定对象 在我看来 您可以使用任何对象来实现此目的 包括事件本身作为锁定对象
  • 如何将变音符号更改为非变音符号[重复]

    这个问题在这里已经有答案了 我在 stackoverflow 上找到了如何删除变音符号的答案 但是您能否告诉我是否可以将变音符号更改为非变音符号 哦 我想到了 NET 或者其他 如果不可能的话 由于没有人费心发布代码来执行此操作 因此它是
  • Room IllegalArgumentException:int 无法转换为元素

    我在尝试编译项目时遇到此错误 错误 任务 app compileDebugJavaWithJavac 执行失败 java lang IllegalArgumentException int无法转换为元素 还有这个警告 警告 注释处理器 an
  • MariaDb 10 条件(其中 id = '1')返回与 id ='1a' 相同的结果

    我创建以 id 作为主键和 int 自动增量的表 用这个脚本 CREATE TABLE devel pos menu id INT NOT NULL AUTO INCREMENT title VARCHAR 100 NULL DEFAULT
  • 向后迭代字符串字符的好方法是什么?

    向后迭代字符串中的字符的最 Swiftian 方法是什么 即喜欢for ch in str 仅相反 我想我一定错过了一些明显的东西 因为我现在能想到的最好的办法是 for var index str endIndex index str s