ruby支持的數據類型包括基本的Number,String,Ranges,Symbols,以及true、false和nil這幾個特殊值。html
同時還有兩種重要的數據結構Array和Hash。正則表達式
1.數值類型(Number)api
1.1整型:整型分爲兩種,若是在31位之內(4字節),那爲Fixnum實例;若是超過,即爲Bignum實例。數組
Fixnum:-2^30 到 2^30-1ruby
前導符號:0對應octal(八進制),0x對應hex(十六進制),0b對應binary(二進制)數據結構
下劃線字符在數字字符串中被忽略。this
ASCII字符或一個用問號標記的轉義序列的整數值。編碼
123 # Fixnum 十進制 1_234 # Fixnum 帶有下劃線的十進制 -500 # 負的Fixnum 0377 # 八進制 0xff # 十六進制 0b1011 # 二進制 "a".ord # "a"的字符編碼 ?\n # 換行符(0x0a)的編碼 12345678901234567890 # 大數 #整型Integer #如下是一些整型字面量 #字面量(literal):代碼中能見到的值,數值,bool值,字符串等都叫字面量 #如如下的0,1_000_000,0xa等 a1=0 #帶千分符的整型 a2=1_000_000 #其它進制的表示 a3=0xa puts a1,a2 puts a3 #puts print 都是向控制檯打印字符,其中puts帶回車換行符 =begin 這是註釋,稱做:嵌入式註釋 相似C#中的/**/ =end
2.浮點型加密
ruby支持浮點數,它們是帶有小數的數字。浮點數是類Float的對象,且能夠是下列中任意一個。spa
123.4 # 浮點值 1.0e6 # 科學計數法 # 浮點型 f1=0.0 f2=2.1 f3=100000.1 puts f3
3.算術操做
加減乘除:+-*/;指數操做爲:**,指數沒必要爲整數
#指數算術 puts 2**(1/4) # 1與4的商爲0,而後2的0次方爲1 puts 16**(1/4.0) # 1與4.0的商爲0.25,而後開四次方根
4.字符串類型
ruby字符串簡單地說是一個8位字節序列,它們是類String的對象,用於存儲或操做一個或多個字節的序列。
ruby字符串分爲單引號字符串''和雙引號字符串"",區別在於雙引號字符串可以支持更多的轉義字符。
雙引號標記的字符串容許替換和使用反斜線符號,單引號標記的字符串不容許替換,且只容許使用\\和\'兩個反斜線符號
4.1 若是須要在單引號字符串內使用單引號字符,那麼須要在單引號字符串使用反斜槓\,這樣ruby解釋器就不會認爲這個單引號字符是字符串的終止符號。
反斜槓也能轉義另外一個反斜槓,這樣第二個反斜槓自己不會解釋爲轉義字符。
puts 'escaping using "\\"'; # escape using "\" puts 'that\'s right'; # That's right
在雙引號字符串中可使用序列#{ expr } 替換任意ruby表達式的值爲一個字符串
puts "相乘 :#{ 24*60*60 }"; # 相乘 :86400 name="Ruby" puts name puts "#{name + ",OK"}" # Ruby ,OK
4.2 字符串中進行數學運算
x,y,z = 12,36,72 puts "x的值爲#{ x }" # x的值爲12 puts "x + y 的值爲 #{ x+y }" # x + y 的值爲 48 puts "x + y + z 的平均值爲 #{(x+y+z) / 3}" # x + y + z 的平均值爲 40
4.3 ruby還支持一種採用%q和%Q來引導的字符串變量,其中%q使用的是單引號引用規則,而%Q是雙引號引用規則。
格式:%q(ruby 的字符串可使用""和''。)
跟在q或Q後面的字符是分界符,分界符能夠是任意一個非字母數字的單字節字符,如:[,{,(,<,!等,字符串會一直讀取到發現相匹配的結束符爲止。
desc1 = %Q{Ruby 的字符串可使用 "" 和 ''。} desc2 = %q[Ruby 的字符串可使用 "" 和 ''。] puts desc1 # Ruby 的字符串可使用 "" 和 ''。 puts desc2 # Ruby 的字符串可使用 "" 和 ''。
4.3 反斜線符號
符號 | 表示的字符 |
---|---|
\n | 換行符(0x0a) |
\r | 回車符(0x0d) |
\f | 換頁符(0x0c) |
\b | 退格鍵(0x08) |
\a | 報警符 Bell(0x07) |
\e | 轉義符(0x1b) |
\s | 空格符(0x20) |
\nnn | 八進制表示法(n是0-7) |
\xnn | 十六進制表示法(n是0-九、a-f或A-F) |
\cx,\C-x | Control-x |
\M-x | Meta-x(c | 0x80) |
\M-\C-x | Meta-Control-x |
\x | 字符x |
4.4 字符編碼
ruby的默認字符集是ASCII,字符能夠用單個字節表示。若是使用utf-8或其餘現代的字符集,字符多是用1-4個字節表示。能夠在程序開頭使用$KCODE改變字符集:$KCODE = 'u'
編碼 | 描述 |
a | ASCII(與none相同)。這是默認的。 |
e | EUC |
n | none,同ASCII |
u | UTF-8 |
4.5 字符串建立方法new
str1 = String.new('this is a test') str2 = str1.upcase puts "#{str1 + "--upper-- " + str2}" #this is a test --upper-- THIS IS A TEST
字符串的其餘方法:
4.5.1 str % arg
使用格式規範格式化字符串。若是arg包含一個以上的替代,那麼arg必須是一個數組。
4.5.2 str * integer
返回一個包含integer個str的新的字符串,也就是str被重複了integer次
4.5.3 str + other_str
拼接other_str到str
4.5.4 str << obj
鏈接一個對象到字符串,若是對象是範圍爲0-255之間的固定數字Fixnum,則它會被轉換成一個字符。
4.5.5 str <=> other_str
把str與other_str進行比較,返回-1(小於)、0(等於)或1(大於),比較區分大小寫。
4.5.6 str == obj
檢查str和obj的相等性。若是obj不是字符串,則返回false
4.5.7 str =~ obj
在obj中根據正則表達式匹配str,返回匹配開始的位置,不然返回false。
4.5.8 str.capitalize
把字符串轉換爲大寫字母顯示。
4.5.9 str.capitalize!
與capitalize相同,可是str會發生變化並返回。
4.5.10 str.casecmp
不區分大小寫比較字符串
4.5.11 str.center
居中字符串。
4.5.12 str.chomp
從字符串末尾移除記錄分隔符,一般是\n,若是沒有記錄分隔符,則不進行任何操做。
4.5.13 str.chomp!
與chomp相同,可是str會發生變化並返回。
4.5.14 str.chop
移除字符串中的最後一個字符
4.5.15 str.chop!
與chop相同,可是str會發生變化並返回。
4.5.16 str.concat(other_str)
鏈接other_str到str.concat
4.5.17 str.count(str,...)
給一個或多個字符集計數。若是有多個字符集,則給這些集合的交集計數。
4.5.18 str.ctypt(other_str)
對str應用單向哈希加密,參數是兩個字符長的字符串,每一個字符的範圍爲a-z,A-Z,0-9, .或/ 。
4.5.19 str.delete(other_str,...)
參數交集中的全部字符會被刪除
4.5.20 str.delete!(other_str,...)
與delete相同,可是str會發生變化並返回。
4.5.21 str.downcase
返回str.downcase的副本,全部的大寫字母會被替換爲小寫字母
4.5.22 str.downcase!
與downcase相同,可是str會發生變化並返回
4.5.23 str.dump
返回str的副本,全部的非打印字符被替換爲\nnn符號,全部的特殊字符被轉義
4.5.24 str.each(separator=$/){ |substr|block }
使用參數做爲記錄分隔符,默認是$/,分隔str,傳遞每一個子字符串給被提供的block
4.5.25 str.each_byte{|fixnum|block}
傳遞str的每一個字節給block,以字節的十進制表示法返回每一個字節
4.5.26 str.each_line(separator=$/){ |substr|block }
使用參數做爲記錄分隔符,默認是$/,分隔str,傳遞每一個子字符串給被提供的block
4.5.27 str.empty?
若是str爲空,即長度爲0,則返回true。
4.5.28 str.eql?(other)
若是兩個字符串有相同的長度和內容,則這兩個字符串相等。
4.5.29 str.gsub(pattern,replacement) str.gsub(pattern){|match|block}
返回str的副本,pattern的全部出現都替換爲replacement或block的值。
pattern一般是一個正則表達式regexp;若是是一個字符串String,則沒有正則表達式元字符被解釋
4.5.30 str[fixnum] str[fixnum,fixnum] str[range] str[regexp] str[regexp,fixnum] str[other_str]
使用下列的參數引用str:
參數爲一個fixnum,則返回fixnum位置的字符;
參數爲兩個fixnum或range,則返回一個在[fixnum1,fixnum2]的字符串;
參數爲regexp,則返回匹配字符串的部分;
參數爲帶有fixnum的regexp,則返回fixnum的匹配數據;
參數爲other_str,ze返回匹配other_str的子字符串。
。。。。。
還有好多,能夠在這裏查String的用法http://www.runoob.com/ruby/ruby-string.html