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