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

如何按给定大小的块从字符串拆分为数组

齐航
2023-03-14
问题内容

我想按给定大小的块分割字符串 2

范例:

字符串"1234567"和输出应为["12", "34", "56","7"]


问题答案:

您可以每隔n个元素对集合元素(在本例中为Characters)进行分组,如下所示:

extension Collection {
    func groups(of n: Int) -> [SubSequence] {
        var startIndex = indices.startIndex
        var groups: [SubSequence] = []
        while startIndex < endIndex {
            let endIndex = indices.index(startIndex, offsetBy: n, limitedBy: indices.endIndex) ?? indices.endIndex
            groups.append(self[startIndex..<endIndex])
            startIndex = endIndex
        }
        return groups
    }
}
let numbers = "1234567"
let groups = numbers.groups(of: 2)
print(groups)    // ["12", "34", "56", "7"]

编辑/更新

如果要将超出的字符追加到最后一组:

extension Collection {
    func groups(of n: Int) -> [SubSequence] {
        var startIndex = self.startIndex
        let count = self.count
        return (0..<count/n).map { _ in
            var endIndex = index(startIndex, offsetBy: n, limitedBy: self.endIndex) ?? self.endIndex
            if count % n > 0, distance(from: self.startIndex, to: startIndex) > (count / n) {
                endIndex = self.endIndex
            }
            defer { startIndex = endIndex }
            return self[startIndex..<endIndex]
        }
    }
}
let numbers = "1234567"
let groups = numbers.groups(of: 2)
print(groups)    // ["12", "34", "567"]


 类似资料:
  • 我想在JavaScript中使用空格作为分隔符将字符串分成固定大小的块(例如每个140个字符)(即它不应该分词),注意:它应该处理换行符目前我使用的是wordwrap npm包,但它不处理新行符。 它适用于普通文本,但如果文本包含新行标记,我会得到以下错误: syntaxerror:exports.runinthiscontext(VM.js:73:16) 在module._compile(mod

  • 问题内容: 我将如何能够采取像一个字符串 ,并将其分成4个长度元组像(,,) 问题答案: 用途:

  • 问题内容: 我想将一个非常大的字符串(例如10,000个字符)分割成N个大小的块。 就性能而言,最佳方法是什么? 例如: 被2分割成。 使用这种方法是否可能实现?如果可以,从性能角度来看,这是否是最佳方法? 问题答案: 您可以执行以下操作: 该方法仍可用于大小不是块大小的整数倍的字符串: 通常,对于要从中提取最多 n个 大小的子字符串的任何字符串,都可以执行以下操作: 如果您的字符串可以包含换行符

  • 我有一个随机地址字符串,如 我想将其拆分为具有两个条件的字符串数组: 该字符串数组的每个元素的长度小于或等于20 字符串数组的元素没有尴尬的结尾 例如,每20个字符拆分将产生: 但正确的输出是: 注意字符串数组中的每个元素是如何小于或等于20的。 以上是我对这段代码的输出:

  • 问题内容: 我试图在网上四处寻找将字符串拆分为字符数组的答案,但似乎找不到一个简单的方法 似乎不像Ruby那样工作。有没有一种简单的方法可以不循环? 问题答案:

  • 问题内容: 有没有办法在不知道字符串长度的情况下,将一个字符长的字符串切成4个字符串,每个字符长? 例如: 问题答案: