gpt4 book ai didi

Swift rangeOfString 索引 0 或 1

转载 作者:行者123 更新时间:2023-11-28 11:01:33 24 4
gpt4 key购买 nike

我有一个名称数组,想从下面的数组中过滤掉第一个或第二个字母为“E”的名称

var userNames = ["John","Tom","Ed","Ben","Albert"]

输出应该是["Ed","Ben"]。 Albert 不应包括在内,因为该位置不是来自第一或第二

let filteredNames = userName.filter { (inputStr) -> Bool in

if let inputRang = inputStr.range(of: "e", options: .caseInsensitive, range: nil, locale: nil)
{
//How do I check the position 0 or 1 here

return true
}
return false
}

最佳答案

@Eendje 发布了一个很好且有效的解决方案来实现您的目标,但要回答您的问题直接问题:你必须计算距离从字符串初始索引(inputStr.startIndex)到位置找到子字符串的位置(inputRange.lowerBound):

let filteredNames = userNames.filter { (inputStr) -> Bool in
if let inputRange = inputStr.range(of: "e", options: .caseInsensitive) {
if inputStr.distance(from: inputStr.startIndex, to: inputRange.lowerBound) <= 1 {
return true
}
}
return false
}

另一种选择是限制搜索范围:

let filteredNames = userNames.filter { (inputStr) -> Bool in
let range = inputStr.startIndex ..< inputStr.index(inputStr.startIndex, offsetBy: 2)
return inputStr.range(of: "e", options: .caseInsensitive, range: range) != nil
}

关于Swift rangeOfString 索引 0 或 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40444097/

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