13
A
回答
28
转换或者到其他,所以无论是:
val1.to_s == val2 # returns true
或者:
val1 == val2.to_i # returns true
虽然红宝石是dynamically typed(类型是在运行时已知的),它也是strongly typed(类型没有按没有得到隐式的类型转换)
3
假设你不知道其中一个是否为零,一个字母数字字符串或一个空字符串,我建议将两边转换为字符串然后比较。
val1.to_str == val2.to_str => true
nil.to_str == "".to_str => true
"ab123".to_str == 123.to_str => false
0
一个重要的除了这个问题:
Integer(val1) == Integer(val2)
我来到这里寻找一个简短的解决方案,而不是明确的,但是这是因为据我所知,最安全的方式。
Integer("123a") # ArgumentError: invalid value for Integer(): "123a"
+1
小心!如果您不指定基数,那么以“0”开头的字符串将被解释为八进制! https://ruby-doc.org/core-2.2.3/Kernel.html#method-i-Integer – 2016-11-10 18:28:36
0
的finishing_moves
宝石具有#same_as
方法,该方法无需做任何类型转换执行比较。
val1 = 1
val2 = "1"
val1.same_as val2
# => True
val2.same_as val1
# => True
0
试试这个
true if Integer(val1) == Integer(val2) rescue false
+1
这是做什么的?它是如何解决问题的? – Adam 2017-04-18 15:02:50
相关问题
- 1. 比较对象的字符串表示形式与列表中每个对象的字符串表示形式
- 2. 将数字转换为其字符串表示形式
- 3. Lambda表达式字符串比较
- 4. 字符串比较表达式
- 5. 正则表达式(字符串比较)
- 6. Linq表达式树字符串比较
- 7. Lambda表达式比较字符串
- 8. Android:JSON字符串数据与其他字符串比较
- 9. 列表字符串比较
- 10. 字符/字符串比较
- 11. 字符串字符比较
- 12. 比较字符串数组
- 13. 比较字符串
- 14. 比较字符串
- 15. 比较字符串
- 16. 字符串比较
- 17. 比较字符串
- 18. 字符串比较
- 19. 字符串比较
- 20. 字符串比较?
- 21. 字符串比较
- 22. 字符串比较
- 23. 字符串比较
- 24. 比较字符串
- 25. 比较字符串
- 26. 字符串比较
- 27. 字符串比较
- 28. 字符串比较
- 29. 字符串比较
- 30. 字符串比较
我会第一建议(改变整数字符串)去,因为如果转换一个字符串,如“9ABC”使用to_i整数,您将得到回整数9,这可能不合适,如果不是这个意图,可能会导致错误。 – ehsanul 2009-08-02 23:19:32