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

相关文章

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现