由一串「數字」轉換「字串」的方法

在 Ruby 中因為可以不用優先宣告資料型態,所以時常會讓程式搞不清楚哪些該是 String 與 Integer ,因此 Ruby 提供 to_s() 這個函數以供轉換。

狀況如下:
[cc lang=”ruby”]
$ irb
ree-1.8.7-2011.03 :001 > myval=101010;
ree-1.8.7-2011.03 :002 > myval[0]
=> 0
ree-1.8.7-2011.03 :003 > myval[0,1]
ArgumentError: wrong number of arguments (2 for 1)
from (irb):5:in `[]’
from (irb):5
from :0
[/cc]

由於要取其中的字串是要用於 String 的類型才能讓 Ruby 正確取得該值。然而我想要做的是我要把這一串數值依照我要的位置取得正確的值,比如說第一位數的 1 與 0 代表 A 功能項目的權限,第二位數代表 B 功能的權限。

使用 to_s 解決方案如下:
[cc lang=”ruby”]
ree-1.8.7-2011.03 :001 > myval=101010;
ree-1.8.7-2011.03 :002 > myval.to_s[0,1]
=> “1”
ree-1.8.7-2011.03 :003 > myval.to_s[1,1]
=> “0”
ree-1.8.7-2011.03 :004 > myval.to_s[2,1]
=> “1”
ree-1.8.7-2011.03 :005 > myval.to_s[3,1]
=> “0”
ree-1.8.7-2011.03 :006 > myval.to_s[4,1]
=> “1”
ree-1.8.7-2011.03 :007 > myval.to_s[5,1]
=> “0”
ree-1.8.7-2011.03 :008 > myval.to_s[0,6]
=> “101010”
[/cc]

因此就可以當作字串來依序取單一值了。

Related Posts Plugin for WordPress, Blogger...

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.