Ruby字符串、条件、循环、数组、Hash、类基本操作笔记

一、字符串操作

字符串插值

1.#{}: 任意放置在#{}中的合法Ruby代码都将被求值,并被替换为求值结果插入到原位置

2.单引号与双引号差别:

双引号允许字符转义,单引号不允许转义,里是什么字符,用户看到的就是什么字符
单引号不允许字符插值

字符串拆分

1.以空格拆分:string.split(' ')字符串连接

方法一、'Ruby' + 'Monk', stdout: RubyMonk
方法二、"Monk".concat("Ruby") stdout: MonkRuby
方法三、"Ruby" << "Monk" stdout: RubyMonk

子字符串替换

替换第一个出现的搜索目标:"I should look into your problem when I get time".sub('I','We')
替换所有符合条件的字符串:"I should look into your problem when I get time".gsub('I','We')

二、条件与循环:Ruby中的控制结构

Ruby布尔表达式

Ruby 使用 == 运算符来比较对象:name == "Bob"
取非表达式:! (name == 'Bob')

if..else 结构 在 Ruby 语言中,? 和 : 可以理解为它们分别对应"then" 和 "else" Ruby语言中的循环

1.无限循环


代码如下:

loopdo
  .....
end

2.执行代码片段N次


代码如下:

times do
  ......
end

三、数组

创建空数组 '[]' 或者Array.new

在数组里查询数据


代码如下:

[1, 2, 3, 4, 5][2]

结果是

代码如下:

3

Ruby的索引从开头开始是从0开始的,从结尾开始是从-1开始的

数组的增长


代码如下:

[1, 2, 3, 4, 5]<<"woot" 结果
[1, 2, 3, 4, 5, "woot"]

基本数组运算

1.数组变换


代码如下:

[1, 2, 3, 4, 5].map { |i| i + 1 }

结果

代码如下:

[2, 3, 4, 5, 6]

2.过滤数组元素


代码如下:

[1,2,3,4,5,6,7].delete_if{|i| i < 4 }

结果

代码如下:

[2, 4, 6]

提取长于五个字母的字符串

代码如下:

names = ['rock', 'paper', 'scissors', 'lizard', 'spock']
names.select {|word| word.length > 5}

结果

代码如下:

["scissors", "lizard"]

3.删除元素

删除下面数组的元素‘5'

代码如下:

[1,3,5,4,6,7].delete 5
[1,2,3,4,5,6,7].delete_if{|i| i < 4}

迭代 1.each 循环


代码如下:

array = [1, 2, 3, 4, 5]
array.each do |i|
  puts i
end

四、Ruby哈希

1.创建一个哈希 空哈希可以使用两个大括号{}来定义,Hash.new

代码如下:

restaurant_menu = {
  "Ramen" => 3,
  "Dal Makhani" => 4,
  "Tea" => 2
}

2.从哈希中取值 从restaurant_menu哈希中取得一碗拉面(Ramen)的价格
restaurant_menu["Ramen"] 结果

3.修改哈希 添加新项


代码如下:

restaurant_menu = {}
restaurant_menu["Dal Makhani"] = 4.5
restaurant_menu["Tea"] = 2 4.遍历哈希
restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.each do | item, price |
  puts "#{item}: $#{price}"
end

结果

代码如下:

Ramen: $3
Dal Makhani: $4
Coffee: $2

用each方法把restaurant_menu中所有项目价格都提高10%

代码如下:

restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.each do |item, price|
  restaurant_menu[item] = price + (price * 0.1)
end

5.从哈希中取键和值
每个哈希对象都有2个方法: keys 和 values。
keys方法返回一个包含哈希中所有的键的数组;类似的, values方法返回一个包含所有的值的数组。
获得restaurant_menu哈希中所有的键

代码如下:

restaurant_menu = { "Ramen" => 3, "Dal Makhani" => 4, "Coffee" => 2 }
restaurant_menu.keys

结果

代码如下:

["Ramen", "Dal Makhani", "Coffee"]

五、类

Ruby使用两个空格缩进的惯例,代码块通常以关键字end封闭 通常,在某个类上调用方法 new 会创立一个实例

代码如下:

Object.new

1.构建你自己的类


代码如下:

class Rectangle
end

计算长方形的周长和面积类实例


代码如下:

class Rectangle
  def initialize(length, breadth)
    @length = length
    @breadth = breadth
  end

def perimeter
    2 * (@length + @breadth)
  end

def area
    @length * @breadth
  end
end

(0)

相关推荐

  • Ruby中Hash哈希结构的基本操作方法小结

    关于哈希 先来了解一下Hash的基本思路: 设要存储对象的个数为num, 那么我们就用len个内存单元来存储它们(len>=num); 以每个对象ki的关键字为自变量,用一个函数h(ki)来映射出ki的内存地址,也就是ki的下标,将ki对象的元素内容全部存入这个地址中就行了.这个就是Hash的基本思路. 为什么要用一个函数来映射出它们的地址单元呢? 假设现在我要存储4个元素 13 7 14 11 显然,我们可以用数组来存.也就是:a[1] = 13; a[2] = 7; a[3] = 14; a

  • Ruby简明教程之数组和Hash介绍

    今天学习的是数组和Hash,数组在很多编程语言中都能常常用到. 数组: 数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据:这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构. 1. 在Ruby中如何定义数组呢? 使用[ ]来框住元素,而元素之间则使用","间隔.如下, 复制代码 代码如下: name = ["Windy", "Cindy", "Amee", "Tom"]

  • Ruby中关于hash的基本使用方法

    哈希键 - 值对的集合,类似这样:"employee" => "salary".它类似于数组,除了索引是通过任意键的任何对象的类型,而不是一个整数索引. 顺序遍历一个哈希键或值要么可能看起来是任意的,一般不会在插入顺序.如果访问的键的哈希值不存在,该方法将返回nil. 创建哈希: 使用数组中,有各种各样的方法来创建哈希值.可以 new 类方法创建一个空的hash : months = Hash.new 还可以使用 new 创建哈希,这是一个默认值,否则只是 n

  • Ruby中Hash的11个问题解答

    最近在学习Rails,因为学习的java为入门语言.些许的不太适应.特别是Ruby的Hash.不过细细的想想就通了.基本上都是通的Key-Value.除了刚开始不太适应写法没什么大的问题.这个是我在网上看到的一篇日志. 1. 如何创建Hash? 复制代码 代码如下: x = Hash.new x = {} x = {:a => 1, :b => 2} 这些都是创建Hash的方法. 第一个和第二个一样,表示创建空的Hash. 第三个表示创建的Hash,有2对键/值. 2. Hash的键是哪些类型

  • Ruby中的Hash哈希类型基本操作方法小结

    1.创建哈希:就像创建数组一样,我们可以通过Hash类来创建一个Hash实例: h1 = Hash.new #默认值为nil h2 = Hash.new("This is my first hash instance") #默认值为" This is my first hash instance": 上面两个例子都创建了一个空的Hash实例.一个Hash对象总是有一个默认的值--因为如果在一个Hash对象里没有找到指定的索引(key),将会返回默认值. 创建了Has

  • Ruby字符串、条件、循环、数组、Hash、类基本操作笔记

    一.字符串操作 字符串插值 1.#{}: 任意放置在#{}中的合法Ruby代码都将被求值,并被替换为求值结果插入到原位置 2.单引号与双引号差别: 双引号允许字符转义,单引号不允许转义,里是什么字符,用户看到的就是什么字符 单引号不允许字符插值 字符串拆分 1.以空格拆分:string.split(' ')字符串连接 方法一.'Ruby' + 'Monk', stdout: RubyMonk 方法二."Monk".concat("Ruby") stdout: Mon

  • 详解在Vue中有条件地使用CSS类

    很多时候Web在运行时要更改元素的CSS类名.但是在改变类名时,有时最好是有条件地应用样式.例如你有一个翻页的效果.翻页效果通常有一个高亮的效果,用于向用户显示当前页,这对于用户而言是很有帮助的.该项目的样式是有条件设置的,基于当前正在查看的页面. 翻页常见的一个效果看起来像下面这样: 在这个示例中,共有五页,每次只选择其中一个页面.如果你用Bootstrap构建一个分页器,那么所选的页面将有一个名为 active 的CSS类名应用在列表项中.如果页面是当前浏览的页面,那么你希望该类被应用.换句

  • Vue条件循环判断+计算属性+绑定样式v-bind的实例

    Vue.js条件与循环 1.条件判断 (1)v-if, <div id="app"> <p v-if="seen">现在你看到我了</p> <template v-if="ok"> <h1>菜鸟教程</h1> </template> </div> <script> new Vue({ el:'#app', data:{ seen:true,

  • 详解Ruby中的循环语句的用法

    Ruby 中的循环用于执行相同的代码块若干次.本章节将详细介绍 Ruby 支持的所有循环语句. Ruby while 语句 语法 while conditional [do] code end 当 conditional 为真时,执行 code.while 循环的 conditional 通过保留字 do.一个换行符.反斜线 \ 或一个分号 ; ,来与 code 分离开. 实例 #!/usr/bin/ruby $i = 0 $num = 5 while $i < $num do puts("

  • Ruby中的循环语句的用法教程

    Ruby中的循环用于执行相同的代码块指定的次数.本章将详细介绍Ruby支持的循环语句. Ruby while 语句: 语法: while conditional [do]    code end 执行代码当条件为true时.while循环的条件是代码中的保留字,换行,反斜杠(\)或一个分号隔开. 实例: #!/usr/bin/ruby $i = 0 $num = 5 while $i < $num do puts("Inside the loop i = #$i" ) $i +=

  • JS实现字符串去重及数组去重的方法示例

    本文实例讲述了JS实现字符串去重及数组去重的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net js数组.字符串去重</title> </head> <body> <script type="text/j

  • php数组遍历类与用法示例

    本文实例讲述了php数组遍历类与用法.分享给大家供大家参考,具体如下: <?php class scanArray{ public $arr; public $where; private $str; public function scan($arr,$where="array"){ $this->arr = $arr; $this->where = $where; foreach($this->arr as $k=>$v){ if(is_array($

  • PHP数组array类常见操作示例

    本文实例讲述了PHP数组array类常见操作.分享给大家供大家参考,具体如下: array_merge($arr1,$arr2....);//合并一个或多个数组 例: 1. <?php $beginning = 'foo'; $end = array(1 => 'bar'); $result = array_merge((array)$beginning, (array)$end); print_r($result); ?> 以上例程会输出: Array     (         [0

  • Java中Arrays数组工具类的基本使用详解

    目录 方法一览表 快速定位详细操作 asList() toString() 和 deepToString() sort() 和 parallelSort() binarySearch() compare() 和 compareUnsigned() copyOf() 和 copyOfRange() equals() deepEquals() 比较equals()和deepEquals()方法  fill() mismatch() parallelPrefix() setAll() 和 parall

随机推荐