Ruby中创建字符串的一些技巧小结

 更新时间:2015年01月04日 11:23:20   投稿:junjie  
这篇文章主要介绍了Ruby中创建字符串的一些技巧小结,本文用先讲解技巧然后给出代码示例的方式列出了多种Ruby创建字符串方法,需要的朋友可以参考下

%{String}  用于创建一个使用双引号括起来的字符串
%Q{String} 用于创建一个使用双引号括起来的字符串

复制代码 代码如下:

str=<<END_OF_STRING
  a string
  END_OF_STRING

%Q!Some String of “Characters”! <==> ” Some String of /”Characters/” “

%q{String} 用于创建一个使用单引号括起来的字符串

%q!Some String of “Characters”! <==> ‘Some String of Characters'

%r{String} 用于创建一个正则表达式字面值

%r{/usr/bin/} <==> ///usr//bin///
%w{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换
%W{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换

%W(North South East West) <==> ["North", "South", "East", "West"]

%s{String} 用于生成一个符号对象
%x{String} 用于执行String所代表的命令

%x{ ls /usr/local } <==> `ls /usr/local`

PS:上面几个%表示法中用{}扩住了String,其实这个{} 只是一种分割符,可以换成别的字符,比如(),那么%表示法就是%(String),当然还可以是别的字符,对于非括号类型的分割符,左右两边要相同, 如%!String!

下面我对这些表示法简单举几个例子:

%{String}用于创建一个使用双引号括起来的字符串
这个表示法与%Q{String}完全一样,这边直接句个例子看结果:

复制代码 代码如下:

result = %{hello} 
puts "result is: #{result}, Type is:#{result.class}" 

结果: result is: hello, Type is:String

%Q{String}用于创建一个使用双引号括起来的字符串
%q{String}用于创建一个使用单引号括起来的字符串

从说明中可以看出这两个表示法的区别就是一个使用双引号,一个使用单引号。使用双引号的字符串会对字符串中的变量做较多替换,而单引号则做较少的替换,具 体看例子。先看%Q{String}:

复制代码 代码如下:

world = "world" 
result = %Q{hello #{world}} 
puts "result is: #{result}, Type is:#{result.class}" 

结果: result is: hello world, Type is:String

换成%q{String}:

复制代码 代码如下:

world = "world" 
result = %q{hello #{world}} 
puts "result is: #{result}, Type is:#{result.class}" 

结果:

result is: hello #{world}, Type is:String

从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。

%r{String}用于创建一个正则表达式字面值
就像使用/reg/方式一样,看代码:

复制代码 代码如下:

result = %r{world} 
puts result =~ "hello world" 
puts "result is: #{result}, Type is:#{result.class}" 

结果: 6

result is: (?-mix:world), Type is:Regexp

可以看出,world从第6个字符开始匹配

%w{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换
%W{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换

这两个应该是大家见过最多的,用这个方式构造数组,可以省下一些逗号,Ruby真 是会惯坏大家,以后大家都不用标点符号了。

同样给一个简单的例子:

复制代码 代码如下:

result = %w{hello world} 
puts "result is: #{result}, Type is:#{result.class}, length is:#{result.length}" 

结果: result is: helloworld, Type is:Array, length is:2

%s{String}用于生成一个符号对象

直接先上代码:

复制代码 代码如下:

result = %s{hello world} 
puts "result is: #{result}, Type is:#{result.class}" 
sym = :"hello world" 
puts "the two symbol is the same: #{sym == result}" 

结果:

result is: hello world, Type is:Symbol
the two symbol is the same: true

可以看出,这两中方式生成的symbol对象完全一样

%x{String}用于执行String所代表的命令

比如:

%x{notepad.exe}可以启动windows下的记事本,这里我就不列结果了(那是一个大家熟悉的窗口)

相关文章

  • ruby on rails中Model的关联详解

    ruby on rails中Model的关联详解

    本文给大家详细讲解了ruby on rails中model关联的几种形式,包括一对多,一对一,多对多。并给出了详细的示例,有需要的小伙伴可以参考下
    2017-07-07
  • Ruby实现的各种排序算法

    Ruby实现的各种排序算法

    这篇文章主要介绍了Ruby实现的各种排序算法,本文给出了Bubble sort、Insertion sort、Selection sort、Shell sort等排序的实现方法,需要的朋友可以参考下
    2015-05-05
  • Ruby中的集合编写指南

    Ruby中的集合编写指南

    这篇文章主要介绍了Ruby中的集合编写指南,作者提出了编程过程中集合方面的一些需要注意的地方,需要的朋友可以参考下
    2015-08-08
  • Ruby中的循环语句的用法教程

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

    这篇文章主要介绍了Ruby中的循环语句的用法教程,逻辑循环语句是每门编程语言的基础,需要的朋友可以参考下
    2015-05-05
  • 优化Ruby代码使程序运行速度提高的例子

    优化Ruby代码使程序运行速度提高的例子

    这篇文章主要介绍了优化Ruby代码使程序运行速度提高的例子,文中引用的项目把一个Ruby项目的运行时间从20秒优化到1.5秒,效果非常明显,需要的朋友可以参考下
    2015-04-04
  • ruby中的双等号==问题详解

    ruby中的双等号==问题详解

    Ruby里面有4种比较方法,equal?, eql?, ==, ===,而且在不同的类里面表现的很不一样。在使用的时候也特别容易搞糊涂。 本文先给大家讲述一下==号的用法及使用中应该注意的地方
    2016-02-02
  • Ruby实现发送邮件的两个方法

    Ruby实现发送邮件的两个方法

    这篇文章主要介绍了Ruby实现发送邮件的两个方法,本文讲解了使用Net::SMTP、使用ruby gem:mail两种方法实现邮件发送,需要的朋友可以参考下
    2015-01-01
  • Windows下Ruby on Rails开发环境安装配置图文教程

    Windows下Ruby on Rails开发环境安装配置图文教程

    这篇文章主要介绍了Windows下Ruby on Rails开发环境安装配置图文教程,ROR初学者必看,需要的朋友可以参考下
    2014-07-07
  • Ruby中case表达式详解

    Ruby中case表达式详解

    本文主要介绍了Ruby中case表达式的两种形式以及分析,有需要的朋友可以参考下
    2014-10-10
  • Ruby中的异常处理代码编写示例

    Ruby中的异常处理代码编写示例

    这篇文章主要介绍了Ruby中的异常处理代码编写示例,作者对异常处理的方式给出了一些比较通用的建议,需要的朋友可以参考下
    2015-08-08

最新评论