小编Oxt*_*hor的帖子

按组大小反转数组

我试图解决这个挑战:给定组大小的组反转一系列元素.

给定数组:[1,2,3,4,5,6]

期望的结果(组大小为3):[4,5,6,1,2,3]

如果最后一个组的元素少于组大小,则只需添加它们并完成,如下所示:

给定数组:[1,2,3,4,5,6,7]

期望的结果:[ 5,6,7,2,3,4,1 ]

我试过这个并且它正在工作,但对我来说它看起来有点奇怪.任何人都可以帮我找到更清洁或更直观的解决方案吗?

extension Array {
    func reverse(groupSize: Int) -> [Element] {
        var reversed = [Element]()
        let groups = count / groupSize

        for group in 0...groups {
            let lowerBound = count - group * groupSize - groupSize
            let upperBound = count - 1 - group * groupSize

            if lowerBound >= 0 {
                reversed += Array(self[lowerBound...upperBound])
            } else {
                reversed += Array(self[0...upperBound])
            }
        }

        return reversed
    }
}
Run Code Online (Sandbox Code Playgroud)

arrays swift

9
推荐指数
1
解决办法
443
查看次数

NumberFormatter 分组未按预期工作

在进行货币格式化工作时,我在尝试格式化智利比索时发现了一个问题。

按照此代码:

let priceFormatter = NumberFormatter()
priceFormatter.locale = Locale(identifier: "es_CL")
priceFormatter.numberStyle = .currency
priceFormatter.currencyCode = "CLP"

priceFormatter.string(from: 9990) // A
priceFormatter.string(from: 99900) // B
Run Code Online (Sandbox Code Playgroud)

执行此操作,A得到9990 美元B得到99.990 美元。 我想要实现的是A 9.990美元

看起来格式化程序没有在第一种情况下添加千位分组分隔符,我不确定为什么。我尝试添加设置groupingSize为 3 但没有成功。

(只有 4 位数字才会出现这种情况)

nsnumberformatter currency-formatting swift

4
推荐指数
1
解决办法
1870
查看次数

使用前缀列表从字符串中删除前缀

我想知道如何从给定的字符串中删除前缀列表中包含的任何前缀(例如:[“the”,“a”,“an”](例如:“A big redplanet”->“big redplanet”) ”)。

我尝试过这个想法,但我不知道它是否正确或最有效。

extension String {
  func removing(prefixes: [String]) -> String {
    var resultString = self
    prefixes.map {
      if resultString.hasPrefix($0) {
        resultString = resultString.dropFirst($0.count).description
      }
    }
    return resultString
  }
}
Run Code Online (Sandbox Code Playgroud)

想法来自这个答案:如何通过标题的第一个字母创建字典,但忽略“the”或“a/an”等文章

string swift

2
推荐指数
1
解决办法
5856
查看次数