【发布时间】:2021-08-07 01:41:54
【问题描述】:
我想用更优雅的方式写出以下内容:
let number = "1,2922.3"
if number.contains(",") || number.contains(".") && !(number.contains(".") && number.contains(",")) {
// proceed
}
也就是说,如果数字有“。”,我想继续。或“,”,但不能同时使用。
一定有更好的方法吗?
我不想使用扩展,因为它在我的代码中的一个地方。
【问题讨论】:
-
您应该使用扩展程序。扩展专门针对代码中的单个位置。始终使用扩展名。 (在某些情况下使用函数代替,但通常是扩展。)
-
@Fattie 我不认为那是意图。 OP 声明不想添加扩展,因为这只是一次性检查 - 他们不想全面扩展一个类 扩展向现有类、结构、枚举添加新功能, 或协议类型。 Extension
-
?你只需使用 fileprivate
-
有时越简单越好!该代码确实没有任何问题,因此不清楚您为什么要简化它。请注意,有一个轻微的逻辑错误,因为您希望将 OR 组合在一起进行评估,例如
( number.contains(",") || number.contains(".") ) && !( number.contains(".") && number.contains(",") )。因此,现在读取的字符串包含 ( . OR , ) 并且不包含两者。这使得第一部分评估为 true if 或 。 -
这似乎很接近验证数字格式。您对“正确格式”的想法可能是错误的,因此请谨慎行事。
标签: swift