gpt4 book ai didi

swift - 我如何重写此 switch 语句,以便以特定方式对字符串数组进行排序

转载 作者:可可西里 更新时间:2023-11-01 00:56:42 25 4
gpt4 key购买 nike

我如何重写此代码,以便按以下方式对字符串数组进行排序:首先,以搜索词作为前缀的字符串。其次,仅包含搜索词的字符串。最后,其他所有内容均按字母顺序排序。

stringArray = stringArray.sorted(by: {
switch ($0.hasPrefix(searchTerm), $1.hasPrefix(searchTerm) {
case (true, true): return $0 < $1 ;
case (true, false): return true ;
case (false, true): return false ;
case (false, false): return $0 < $1
}})

最佳答案

您只需要更改 switch 语句的最后一个 case,因为如果当前元素和下一个元素都不以 searchTerm 开头,您只想更改顺序,否则您仍然更喜欢以 searchTerm 开头的元素。否则。

在两个元素都没有前缀的情况下,您检查它们是否包含 searchTerm 并以与之前完全相同的方式处理结果。

stringArray = stringArray.sorted(by: {
switch ($0.hasPrefix(searchTerm), $1.hasPrefix(searchTerm)){
case (true, true): return $0 < $1
case (true, false): return true
case (false, true): return false
case (false, false):
switch ($0.contains(searchTerm), $1.contains(searchTerm)) {
case (true, true): return $0 < $1
case (true, false): return true
case (false, true): return false
case (false, false): return $0 < $1
}
}})

此代码已在 playground 中进行了测试,并按预期工作。使用以下测试用例:

let stringArray = ["b","ba","c","d","da","ae","aa","fae","a"]
let searchTerm = "a"

结果是:["a", "aa", "ae", "ba", "da", "fae", "b", "c", "d"]

关于swift - 我如何重写此 switch 语句,以便以特定方式对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45663319/

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