RoR实战《第2招》- 无处不在的字符串

2024-01-20 00:32

本文主要是介绍RoR实战《第2招》- 无处不在的字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    Ruby 语言中,字符串是 String 类的实例,因此任意的字符串变量、常量都可以调用 String 类的实例方法。 String 类是 Ruby 中最重要的类之一,拥有多个标准方法。


招数列表:


第2招  无处不在的字符串
2.1  创建字符串
2.2  字符串的%表示法
2.3  多行字符串表示方式
2.4  合并字符串
2.5  替换字符串内容
2.6  改变字符串
2.7  获取或替换字符和子字符串
2.8  比较两个字符串是否相等
2.9  比较两个字符串大小

 

参考资料:http://school.itzcn.com

 


 

2.1  创建字符串

 

     Ruby 允许使用单引号( ' ' )或者双引号 (" ") 来创建字符串,这种单引号或者双引号就是字符串的分隔符。例如:

a="Ruby"                                                                      # 定义字符串变量 a

b='Ruby'                                                                        # 定义字符串变量 b

puts a==b                                                                     # 判断两个变量是否相等,返回 true

    虽然使用单引号和双引号都可以创建字符串,但是在 Ruby 语言中,使用这两种方式创建特殊字符串时,效果并不相同。使用单引号创建字符串,对括起来的字符串只进行最少替换;而使用双引号创建字符串,则对括起来的字符串进行更多替换,例如替换转义字符和其他特殊字符。

    下表 列出了 Ruby 语言中常用的一些转义字符和特殊字符。

 

转义字符和特殊字符

字符串

含义

/a

替换成 Bell 声所对应的符号

/nnn

nnn 表示一个八进制数值,替换成该八进制数所对应的字符

/b

退格符,替换成退格键所对应的字符

/xnn

nn 表示一个十六进制数值,替换成该十六进制数所对应的字符

/e

替换成 Escape 键所对应的字符

/cx

替换成“ Ctrl+x ”组合键所对应的字符,其中 x 可以是任意键对应的字符

/C-x

替换成“ Ctrl+x ”组合键所对应的字符,其中 x 可以是任意键对应的字符

/n

换行符,替换成一个空行

/M-x

替换成“ Alt+x ”组合键所对应的字符,其中 x 可以是任意键对应的字符

/r

回车符,替换成一个回车

/M-/C-x

替换成“ Ctrl+Alt+x ”组合键所对应的字符,其中 x 可以是任意键对应的字符

/s

空白符,替换成一个空白字符

/t

替换成一个“ Tab ”键所对应的字符

/v

替换成一个垂直“ Tab ”键所对应的字符

#{expr}

替换成变量或者表达式 expr 所对应的值

 

    下面分别使用单引号和双引号创建一些特殊的字符串,如下代码所示。

puts 'hello /n world'                               # 在单引号中使用换行符

puts "hello /n world"                                                         # 在双引号中使用换行符

puts 'it is/sOK'                                                                   # 在单引号中使用空白符

puts "it is/sOK"                                                                  # 在双引号中使用空白符

puts '/141'+"   "+"/141"                                                   # 替换八进制数 141 所对应的字符

puts '/x52'+"   "+"/x52"                                                    # 替换十六进制数 x52 所对应的字符

puts '/v'+"   "+"/v"                                                           # 替换垂直 Tab 对应字符

a="Ruby"                                                                           # 创建局部变量

puts "I love #{a}"                                                             # 替换局部变量

puts 'I love #{a}'                                                               # 替换局部变量

    上述代码中的执行结果如下所示:

hello /n world

hello

  world

it is/sOK

it is OK

/141   a

/x52   R

/v 

                                                                 # 此处空白就是由“ /v ”替换结果

I love Ruby

I love #{a}

    从上述结果中可以看出,对于使用双引号创建的字符串, Ruby 会对字符串中的转义字符和特殊字符进行替换,而使用单引号创建的字符串,则不执行替换。这样使得在程序中创建字符串更加方便,更加灵活,程序开发者可以根据实际需求来选择使用何种方式创建字符串。

2.2  字符串的%表示法

 

    在创建字符串时,如果希望一个字符串是由多行文本字符组成,则可以使用 % 表示法。 % 表示法一共有三种形式:

 

  1. %/stuff/  该形式中“ / ”是分隔符,可以是斜线、括号等字符。 stuff 表示一个多行文本字符串,这中形式类似于使用双引号创建字符串,对转义字符和特殊字符进行替换。
  2. %Q/stuff/  %/stuff/ 用法完全相同
  3. %q/stuff/  该形式中个部分的作用同 %/stuff/ 完全相同,只是使用该形式创建字符串类似于使用单引号创建字符串,只进行很少替换。

 

    下面创建一个具体示例,如下代码 所示。

 

name=" 祝红涛 "                                                                                 # 创建变量 name

age=23                                                                                           # 创建变量 age

sex=" "                                                                                        # 创建变量 sex

info=%Q{ 个人信息调查                                                               # 使用 %Q/stuff/ 形式创建多行文本字符串

姓名: #{name}

年龄: #{age}

性别: #{sex}

}

info1=%q( 个人信息调查                                                          # 使用 %q/stuff/ 形式创建多行文本字符串

姓名: #{name}

年龄: #{age}

性别: #{sex}

)

puts info,info1                                                                              # 输出变量 info info1

 

    具体执行结果如下所示:

个人信息调查

姓名:祝红涛

年龄: 23

性别:男

个人信息调查

姓名: #{name}

年龄: #{age}

性别: #{sex}

 

    本文就介绍到这里,有关ROR字符串的其他操作请关注本系列的其他文章。

这篇关于RoR实战《第2招》- 无处不在的字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624229

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的