Swift - 查找字符串中两个位置之间的子字符串

2024-01-24

我有一个格式如下的字符串:“XbfdASF;FBACasc|Piida;bfedsSA|XbbnSF;vsdfAs|”

基本上它是一个 ID;ID|然后又重复。

我有第一个 ID,我需要找到它的合作伙伴示例:我有“Piida”,我需要找到“;”之后紧随其后的字符串这是“bfedsSA”

我该怎么做呢?

我遇到的问题是 ID 的长度是动态的,所以我需要获取“|”的索引在我的 ID 为“Piida”之后,然后获取这些索引之间的字符串,在本例中应该为“bfedsSA”。


有很多方法可以做到这一点,但最简单的方法是使用分隔符将字符串拆分为数组。

如果您了解 JavaScript,那么它相当于.split()字符串方法;迅速有这个功能 https://stackoverflow.com/a/25229901/1187415,但正如您所看到的,它可能会变得有点混乱。您可以扩展字符串像这样 https://gist.github.com/pyrtsa/c6af49d8f2d95a6b454d让它变得更简单一点。为了完整起见,我将其包含在这里:

import Foundation

extension String {
    public func split(separator: String) -> [String] {
        if separator.isEmpty {
            return map(self) { String($0) }
        }
        if var pre = self.rangeOfString(separator) {
            var parts = [self.substringToIndex(pre.startIndex)]
            while let rng = self.rangeOfString(separator, range: pre.endIndex..<endIndex) {
                parts.append(self.substringWithRange(pre.endIndex..<rng.startIndex))
                pre = rng
            }
            parts.append(self.substringWithRange(pre.endIndex..<endIndex))
            return parts
        } else {
            return [self]
        }
    }
}

现在,您可以致电.split()在这样的字符串上:

"test".split("e") // ["t", "st"]

因此,您首先应该做的是通过分隔符将 ID 字符串分成多个段,这将是|,因为这就是您的 ID 的分隔方式:

let ids: [String] = "XbfdASF;FBACasc|Piida;bfedsSA|XbbnSF;vsdfAs|".split("|")

现在,您的 ID 的字符串数组如下所示:

["XbfdASF;FBACasc", "Piida;bfedsSA", "XbbnSF;vsdfAs"]

您的 ID 格式如下ID;VALUE,所以你可以像这样再次分割它们:

let pair: [String] = ids[anyIndex].split(";") // ["ID", "VALUE"]

您可以访问该数组索引 0 处的 ID 和索引 1 处的值。

Example:

let id: String = ids[1].split(";")[0]
let code: String = ids[1].split(";")[1]

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

Swift - 查找字符串中两个位置之间的子字符串 的相关文章

  • 字符串池可以包含两个具有相同值的字符串吗? [复制]

    这个问题在这里已经有答案了 字符串池可以包含两个具有相同值的字符串吗 String str abc String str1 new String abc Will the second statement with new operator
  • 如何处理最终字符串?

    制作有什么好处吗String as final或者我们可以做String as final 我的理解是 由于 String 是不可变的 因此没有必要将其设为最终的 这是正确的还是人们想要的情况String as Final Code pri
  • 清洁琴弦的更好方法?

    我正在使用这种方法来清理字符串 public static string CleanString string dirtyString string removeChars lt gt string result dirtyString f
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 执行 Boyer-Moore 模式匹配时是否必须考虑编码?

    我即将实现 Boyer Moore 模式匹配算法的变体 具体来说是星期日算法 我问自己 我的字母表大小是多少 它是否取决于编码 可能的字符数 或者我可以假设我的字母表由 256 个符号组成 一个字节可以表示的符号数 在许多其他情况下 将字符
  • 类型错误:“datetime.datetime”和“str”的实例之间不支持“>”

    我是 python 日期和时间类型的新手 我有一个日期值 date 2018 11 10 10 55 31 00 00 我需要检查该日期值是否超过 90 天 我试过 from datetime import datetime from da
  • NSDateFormatter 返回错误的日期 + Swift

    Code let dateString 2016 04 02 var formatter NSDateFormatter NSDateFormatter formatter timeZone NSTimeZone abbreviation
  • Transit MKDirectionsRequest 产生 null 错误 Error Domain=MKErrorDomain Code=5 "(null)"

    我正在尝试使用 MapKit Directions Request 来获取两个坐标之间的交通方向 当我切换到其他 非 Transit 类型时 下面的代码可以工作 但是当我切换到 Transit 时 它会抛出一个错误 该错误在 Apple 文
  • 迭代 NSOrderedSet

    我正在尝试迭代 NSOrderedSet 的实例 像这样的事情 func myFunc var orderedSet NSOrderedSet array 42 43 44 for n in orderedSet NSLog i n 但是
  • iOS UIButton 带有圆角和背景 bug

    我发现圆形 UIButton 存在一个奇怪的问题 这是我创建此按钮的代码块 let roundedButton UIButton type System roundedButton frame CGRectMake 100 100 100
  • 将 Xcode 的测试类助理编辑器与 Swift 类结合使用

    在 Xcode 中工作时 在助理编辑器中提取单元测试用例通常会很好 目前 我一直在手动选择测试文件 但我看到助理编辑器有一个选项Test Classes 我试图让这个选项自动提取我的测试文件 但我似乎无法让它工作 是否需要某种配置 它不适用
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 检查 PHP 中的字符串长度

    我有一个长度为 141 个字符的字符串 使用下面的代码我有一个if如果字符串大于或小于 140 则语句返回一条消息 libxml use internal errors TRUE dom new DOMDocument dom gt loa
  • C# 是否有像 Java 那样的字符串分词器?

    我正在做简单的字符串输入解析 我需要一个字符串标记器 我是 C 新手 但已经编写过 Java 程序 因此 C 应该有一个字符串标记生成器似乎很自然 可以 它在哪里 我该如何使用它 你可以使用String Split 方法 http msdn
  • ruby 字符串到哈希值的转换

    我有一个这样的字符串 str uu p xx m yy n zz m 我想知道如何将给定的字符串转换为哈希值 即我的实际要求是 有多少个值 符号之前 有m n和p 我不需要计数 我需要一个精确的值 这样输出效果会更好 m gt xx zz
  • 具有字符串类型的 CAPL 关联数组

    按照此paper https kb vector com upload 551 file CAPL 3 CANNewsletter 201411 PressArticle EN pdf 我正在尝试创建一个像这样的关联数组 variables
  • 按范围迭代数组

    我有一个数组 1 2 3 4 5 6 100 我希望将此数组迭代 5 次 具体来说 取数组的前 5 个数字并获取平均值 继续处理接下来的 5 个数字并获取平均值 依此类推 我尝试过多种方法 例如Dequeue和 for 循环但未能获得所需的
  • 在 UIView 中实现自定义 StaggereGrid,就像 SWIFT 中的 Etsy 应用程序一样

    我想实现一个像 Etsy 应用程序一样的 StaggeredGrid 但我对此一无所知 你能给我一些建议吗 这是我需要做的事情的屏幕截图 None
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self

随机推荐

  • C++ 中多线程的 join() 和 detach() 有什么不同?

    之间有什么不同join and detach 在C 中的多线程中 做join 杀死线程 A C thread对象通常 但不总是 代表一个执行线程 这是一个操作系统或平台概念 When thread join 被调用时 调用线程将阻塞 直到执
  • Google Cloud Endpoints 对 openApi 3 的支持 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 正如文档中所述 Google Cloud Endpoints 支持使用 OpenAPI 规范 2 0 版描述的 API 有计划支持3 0版
  • Solidity如何使用元组(嵌套abi)进行函数签名?

    struct Test uint ui string s function test Test t public emit Log t ui t s 我对ABI有一些了解 我使用实验性 ABIEncoderV2 选项签订了这份合同 总之 这
  • 将 .NET 像素转换为 OpenXML 格式的 Excel 宽度的公式

    我花了很多时间尝试确定使用 OpenXML 格式将 NET 像素转换为 Excel 列宽的公式 我正在使用 EPPlus 生成 xml 文档 我正在尝试确定要自动调整大小的列的宽度 我通过测量字符串来获取像素数 然后尝试将其转换为 Open
  • 调试从非托管 C++ 调用的托管 .NET 代码

    我已经阅读了 SO 上提供的解决方案 但到目前为止没有任何解决方案可以解决我的问题 我的启动项目是一个非托管 C 项目 我们将其称为 TestWrapper 目标是让 TestWrapper 调用托管 C 项目 然后该项目调用我的 C 项目
  • ojdbc14.jar 与 ojdbc6.jar

    我注意到以下差异 但没有在任何地方看到它的记录 我想知道其他人是否注意到了同样的事情 或者可以向我指出一些证明相同的文档 Env Oracle 11g JDK 1 6 iBatis PL SQL 设想 ojdbc14 jar 如果 pl s
  • 无法在 firebase 函数模拟器上提供 Express 应用程序 | EADDRINUSE:地址已在使用 :::3000

    我正在使用 firebase 函数在 firebase 上测试快速应用程序部署 但使用命令后firebase serve 我正进入 状态EADDRINUSE address already in use 3000 这是我的index js
  • Cython:在类型声明中使用导入的类

    我正在编写 Cython 0 23 程序 但我不知道如何使用cdef class我在类型声明中从不同的模块导入 这是重现该问题的片段 test py import pyximport pyximport install from mymod
  • excel vba调用带变量的子程序

    我定义了以下子例程 Sub EnterCellValueMonthNumber cells As range number As Integer range cells Select ActiveCell FormulaR1C1 numbe
  • 如何将 IDbCommandInterceptor 仅挂钩到特定类型的 DbContext?

    目前我正在添加我的实现IDbCommandInterceptor https msdn microsoft com en us library system data entity infrastructure interception i
  • 清除:两者或溢出:自动,哪个更好?

    我真的不明白有什么区别明确 两者 and 溢出 自动 我对其进行了测试 功能的工作方式相同 有人会解释为什么这两者的工作方式相同吗 从我在一些文章和问题中看到的 Overflow auto 可以在内部有浮动的容器中使用 并且使用空 div
  • 使用一个 LINQtoSQL 语句返回不同的对象

    我有一个由员工和学生实施的IPerson 我什么really想要的就是你在下面看到的 一个 LINQ 语句即可获取每种类型的 IPerson 在我调用该方法之前 这非常有效 为什么我会收到错误 这是有道理的 但我真的很难找到一种合适的方法来
  • 如何使用 CSS 和 JavaScript 制作可更改的主题

    我对 CSS 和 JavaScript 还很陌生 我想知道您是否可以制作一个脚本来更改网站使用的样式表 说 你有一个绿色主题 所有东西都是绿色的 您会怎么做 以便用户可以通过按下按钮将其更改为红色 有谁知道如何做到这一点 您可以为链接标签设
  • 创建游戏插件时出现 SerpentAI 错误

    我最近安装了 SerpentAI 但在创建游戏插件时遇到了问题 运行命令时 serpent generate game 我提供以下答案 RaftWars 网页浏览器 What is the name of the game Titleize
  • 如何将跟踪信息保存到文件中

    我正在通过启用跟踪来跟踪我的 ASPX 页面web config
  • 何时对片段使用 onCreateView?

    我正在按照以下步骤操作 http developer android com training basics fragments creating html AddInLayout http developer android com tr
  • “Image Literal”命令在 Xcode 中不起作用

    我开始学习 swift 语言 有一个命令 Image Literal 可以添加图像 但它没有显示任何内容 除此之外 如果我尝试任何其他编码 它会自动得到建议 但图像文字根本不起作用 我正在使用 Xcode 13 任何线索都会非常有帮助 对于
  • Blazor客户端发送电子邮件

    我在 Razor 页面中包含了一个联系表单 以便用户可以在其中填写他的电子邮件 主题和正文 当他提交时 电子邮件会发送到我的电子邮件地址 我的代码看起来像这样example https learn microsoft com fr fr d
  • 为什么 C++11 允许 GC? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Swift - 查找字符串中两个位置之间的子字符串

    我有一个格式如下的字符串 XbfdASF FBACasc Piida bfedsSA XbbnSF vsdfAs 基本上它是一个 ID ID 然后又重复 我有第一个 ID 我需要找到它的合作伙伴示例 我有 Piida 我需要找到 之后紧随其