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

相关文章
相关标签/搜索