gpt4 book ai didi

ios - 如何在 Swift 5 中检查字符串是否以字母开头?

转载 作者:行者123 更新时间:2023-12-03 18:58:20 28 4
gpt4 key购买 nike

问题:我目前正在尝试 Sort a List in SwiftUI根据 Items First Character .我也想实现一个 Section对于所有项目,其中 doesn't beginCharacter of the Alphabet (数字,特殊字符)。
到目前为止我的代码:

let nonAlphabetItems = items.filter { $0.name.uppercased() != /* beginns with A - Z */ }
有没有人有这个问题的解决方案。当然我可以做一个巨大的循环构造,但是我希望有一种更优雅的方式。
谢谢你的帮助。

最佳答案

您可以检查字符串范围是否"A"..."Z"包含您的 name 属性的第一个字母:

struct Item {
let name: String
}
let items: [Item] = [.init(name: "Def"),.init(name: "Ghi"),.init(name: "123"),.init(name: "Abc")]

let nonAlphabetItems = items.filter { !("A"..."Z" ~= ($0.name.first?.uppercased() ?? "#")) }

nonAlphabetItems // [{name "123"}]

扩展这个主题,我们可以扩展 Character添加 isAsciiLetter属性(property):
extension Character {
var isAsciiLetter: Bool { "A"..."Z" ~= self || "a"..."z" ~= self }
}
这将允许扩展 StringProtocol检查是否以 ASCII 字母开头的字符串:
extension StringProtocol {
var startsWithAsciiLetter: Bool { first?.isAsciiLetter == true }
}
并且只是一个否定 bool 属性的助手:
extension Bool {
var negated: Bool { !self }
}

现在我们可以按如下方式过滤项目集合:
let nonAlphabetItems = items.filter(\.name.startsWithAsciiLetter.negated)   // [{name "123"}]

关于ios - 如何在 Swift 5 中检查字符串是否以字母开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65360534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com