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

标签 string swift substring indexof

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

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

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

我该怎么做?

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

最佳答案

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

如果您了解 JavaScript,它相当于 .split() 字符串方法; swift does have this functionality ,但正如您所看到的,它可能会变得有点困惑。您可以扩展字符串 like this让它变得更简单一点。为了完整起见,我将其包含在这里:

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 处的值。

示例:

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

println("\(id): \(code)") // Piida: bfedsSA

关于string - Swift - 查找字符串中两个位置之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332992/

相关文章:

linux - 带/不带引号和单引号/双引号的 bash 字符串

C++ Array of Arrays,分别定义部分

java - 如何检查字符串是否以确切的字符串结尾?

Python:在字符串中查找子字符串并返回子字符串的索引

Java - 字符串不会写入文件

ios - 如何在 iOS 11+ 中录制 FLAC 格式

ios - 在 UIAlertController 的 UIAlertAction 中居中图像

php - 快速 3 http 请求

r - 提取可能多次出现或根本不出现的字符串元素

c# - 获取子字符串 - 特定字符之前的所有内容