Ruby我自己常用的小技巧
最近越來越喜歡用Ruby來寫一些小程式,以前要寫很多行的Code,現在都可以用簡單幾行的Code就可以達成了,而且現在愈學愈多程式語言之後,腦袋瓜能記的東西越來越少了,想一想還是把常用的記下來的好。
以下是我會常常用的小技巧。目前只有一點點,之後有學到新的東西會繼續加 。
官方網站的API文件 : http://www.ruby-doc.org/core-1.9.3/
1. 將字串110轉成十進位6
puts "110".to_i(base=2).to_s(base=10)
$> 6
2. 將字串1110轉成16進位E
puts "1110".to_i(base=2).to_s(base=16)
$> e
3. 數字15傳成二進位1111
puts 15.to_s(base=2)
$> 1111
4.字串搜尋並取代
puts "ABbCD".gsub(/b/,"B")
$> ABBCD
5. 打開檔案並且一個BYTE一個BYTE讀取,並轉進陣列
data = []
f = File.open(FILE_NAME)
f.each_byte {|ch| data.push(ch)}
6. 迴圈
(0..7).each { |i| print "Num #{i} "}
$> Num 0 Num 1 Num 2 Num 3 Num 4 Num 5 Num 6 Num 7
3.times { print "H"} or "H"*3
$> HHH
7. 輸出中文字
如果你的檔案是用UTF8的話,請在檔案的最上頭加上
# -*- coding: UTF-8 -*-
如果你是用ANSI的話,請加上 (通常用Window的筆記本會存成這樣的格式,你也是可以改成utf8)
# -*- coding: Big5 -*-
puts "我的最愛"
8. 陣列
data = [1,2,3]
puts data.inspect
$> [1, 2, 3]
data.push("a")
puts data.inspect
$> [1, 2, 3,"a"]
data = Array.new(3,0)
puts data.inspect
$> [0, 0, 0]
arr = [1,2,3]
arr.each_with_index {|a,i| print "No.#{i+1} #{a}\n"}
$>
No.1 1
No.2 2
No.3 3
9. 陣列轉成字串
arr = ["1","2","3","4","5"]
arr.join(",")
$> "1,2,3,4,5"
arr.join("")
$> "12345"
arr.map { |x| x + "!" }
$> ["1!", "2!", "3!", "4!", "5!"]
arr.sort {|x,y| y <=> x }
$>["5", "4", "3", "2", "1"]
arr=["5", "4", "3", "2", "1"]
arr.sort
$> ["1", "2", "3", "4", "5"]
P.S. 如果你要再做sort的時候把sort過後的資料寫回本身的話就用sort!這個函數。
arr = [1,2,3]
arr.each_with_index {|a,i| print "No.#{i+1} #{a}\n"}
$>
No.1 1
No.2 2
No.3 3
9. 陣列轉成字串
arr = ["1","2","3","4","5"]
arr.join(",")
$> "1,2,3,4,5"
arr.join("")
$> "12345"
arr.map { |x| x + "!" }
$> ["1!", "2!", "3!", "4!", "5!"]
arr.sort {|x,y| y <=> x }
$>["5", "4", "3", "2", "1"]
arr=["5", "4", "3", "2", "1"]
arr.sort
$> ["1", "2", "3", "4", "5"]
P.S. 如果你要再做sort的時候把sort過後的資料寫回本身的話就用sort!這個函數。
10. File
FILENAME = "test.txt"
data = "Hello"
File.open(FILENAME, 'w') {|f| f.write("#{data}") }
File Reference : http://snippets.dzone.com/posts/show/5051
11. String Split
S = "a,b,c,d,e"
puts S.split(',').inspect
$>["a", "b", "c", "d", "e"]
FILENAME = "test.txt"
data = "Hello"
File.open(FILENAME, 'w') {|f| f.write("#{data}") }
File Reference : http://snippets.dzone.com/posts/show/5051
11. String Split
S = "a,b,c,d,e"
puts S.split(',').inspect
$>["a", "b", "c", "d", "e"]
留言