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 - 查找字符串中两个位置之间的子字符串 的相关文章

  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • UIButton 导致无法识别的选择器发送到实例

    我正在尝试使用 for 循环创建多个按钮 但在使用 sender 函数时遇到问题 我有以下代码 func setUpButtons for i in 1 3 let btn UIButton UIButton frame CGRect x
  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 当我输入字符时,SwiftUI 中的 TextField 失去焦点

    当我在文本字段中输入字符时遇到问题 在练习集视图 我必须重新单击文本框才能输入另一个字符 如果我从文本字段中删除绑定 我可以流畅地输入文本 我认为这与我的演讲者班级和更新集函数重新创建一个集合实例 因为我必须替换数组中两层深处的一些值 Co
  • 在 Swift 中从 UIScrollView 创建 PDF 文件

    我想从 UIScrollView 的内容创建一个 PDF 文件 func createPdfFromView aView UIView saveToDocumentsWithFileName fileName String let pdfD
  • UIButton的高亮状态由什么控制事件开始和结束

    我正在创建类似钢琴的视图UIButton作为钢琴键 什么UIControlEvents当按钮获得和失去突出显示状态时 我应该监听以获得回调吗 我试图创建子类UIButton并添加属性观察者highlighted并且运行良好 然而 有时我需要
  • 如何使用 Swift 使用 TouchID?

    Apple 为 iOS 8 的 TouchID 实现提供的文档采用 Objective C 语言 有 Swift 版本吗 Objective C IBAction touchIDAvailable UIButton touchIDAvail
  • Swift:使具有相同“形状”的两种类型符合通用协议

    我有两种不同的类型 它们代表相同的数据 并且具有完全相同的 形状 这两种不同的类型是代码生成的 我被迫处理它们 但是 我想让它们符合一个通用的协议 这样我就可以对这两种类型一视同仁 这是一个例子 假设这是我所坚持的两种代码生成类型 stru
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • Apple Mach-O 链接器错误(静态,不是 ld)

    我最近遇到了 Apple Mach O 链接器错误 大多数指南建议将 构建设置 中的位码更改为 否 但它仅适用于 ld 错误 这与我的不同 我会提供截图 请帮忙修复bug pod HandySwift 导致了错误的出现 这是它的 Githu
  • 如何使用 CNContacts 快速获取手机号码?

    我有一些代码可以检索用户联系人中的所有电话号码 但只想过滤掉手机号码 目前 我只是通过将第一个数字为 或第二个数字为 7 的数字添加到数组中来实现此目的 如下所示 func findContacts gt CNContact let key
  • Swift:设置协议的可选属性

    如何设置协议的可选属性 例如 UITextInputTraits 有许多可选的读 写属性 当我尝试以下操作时 出现编译错误 无法分配给 textInputTraits 中的 keyboardType func initializeTextI
  • $0 和 $1 在 Swift 闭包中意味着什么?

    let sortedNumbers numbers sort 0 gt 1 print sortedNumbers 谁能解释一下什么 0 and 1在斯威夫特中意味着什么 另一个样本 array forEach actions append
  • 将类型传递给通用 Swift 扩展,或者理想情况下推断它

    说你有 class Fancy UIView 你想找到所有兄弟姐妹Fancy意见 没问题 https stackoverflow com q 37232743 294884 for v UIView in superview subview
  • 在 WKWebView 中禁用缩放?

    有谁知道在 WKWebView 中禁用双击和捏缩放的简单方法 我尝试过的任何方法都不起作用 Webview scrollView allowsMagnification false Error value of type WKWebView
  • 从字符串末尾删除多个字符类型

    我有一个构建地址字段的循环 其中一些字段在字符串末尾可能为空 List
  • 如何使用 IOS 12 在 UITableViewCell 中正确添加 UICollectionView

    由于某些原因 在使用 Xcode 10 beta 时 我无法正确显示 tableview 单元格内集合中的某些项目 在过去的四天里我尝试了我所知道的一切 我做了一个小项目样本来看看我的问题是什么 如果有人想在本地运行完整代码 请参见此处 h
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在

随机推荐

  • 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 我需要找到 之后紧随其