gpt4 book ai didi

swift - 检查字符串是 int 还是 double ,在 swift 3 中有扩展

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

我有字符串扩展名,您可以在下面看到,但只为 Int 返回 true,我想为 All 、 IntDouble< 返回 true/strong> 仅值。

extension String  {
var isnumberordouble : Bool {
get{
return self.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
}
}
}

我该如何解决?任何想法 ? ty.

最佳答案

正如@MartinR 所说,检查字符串是否可以转换为 IntDouble:

extension String  {
var isnumberordouble: Bool { return Int(self) != nil || Double(self) != nil }
}

print("1".isnumberordouble) // true
print("1.2.3".isnumberordouble) // false
print("1.2".isnumberordouble) // true

@MartinR 在评论中提出了一个很好的观点。转换为 Int 的任何值也会转换为 Double,因此只需检查是否转换为 Double 就足够了:

extension String  {
var isnumberordouble: Bool { return Double(self) != nil }
}

处理前导和尾随空格

上面的解决方案有效,但如果您的 String 有前导或尾随空格,它就不是很宽容了。要处理该问题,请使用 StringtrimmingCharacters(in:) 方法删除空格(需要 Foundation):

import Foundation

extension String {
var isnumberordouble: Bool { return Double(self.trimmingCharacters(in: .whitespaces)) != nil }
}

print(" 12 ".isnumberordouble) // true

关于swift - 检查字符串是 int 还是 double ,在 swift 3 中有扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243002/

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