您的位置:首页 > 编程语言 > Ruby

ruby学习笔记-基础数据类型

2018-01-03 00:00 274 查看
摘要: ruby数据类型 整型、浮点型、字符串

ruby支持的数据类型包括基本的Number,String,Ranges,Symbols,以及true、false和nil这几个特殊值。

同时还有两种重要的数据结构Array和Hash。

1.数值类型(Number)

1.1整型:整型分为两种,如果在31位以内(4字节),那为Fixnum实例;如果超过,即为Bignum实例。

Fixnum:-2^30 到 2^30-1

前导符号:0对应octal(八进制),0x对应hex(十六进制),0b对应binary(二进制)

下划线字符在数字字符串中被忽略。

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的对象,且可以是下列中任意一个。

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-9、a-f或A-F)
\cx,\C-xControl-x
\M-xMeta-x(c | 0x80)
\M-\C-xMeta-Control-x
\x字符x
4.4 字符编码

ruby的默认字符集是ASCII,字符可以用单个字节表示。如果使用utf-8或其他现代的字符集,字符可能是用1-4个字节表示。可以在程序开头使用$KCODE改变字符集:$KCODE = 'u'

编码描述
aASCII(与none相同)。这是默认的。
eEUC
nnone,同ASCII
uUTF-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Ruby
相关文章推荐