ruby學習筆記-基礎數據類型

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

相關文章
相關標籤/搜索