`

转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法

    博客分类:
  • RUBY
 
阅读更多
[Ruby]转载: 关于ruby中 %Q, %q, %W, %w, %x, %r, %s 的用法

单引号内的内容,ruby会原样输出

双引号内的内容,ruby会解析

我们看个简单的例子,针对字符串      #{foo}test     我们分别用单引号核双引号操作

'#{foo}test'

=> "\#{foo}test"
  

"#{foo}test"

NameError: undefined local variable or method `foo' for main:Object
        from (irb):4
        from C:/Ruby192/bin/irb:12:in `<main>'
显而易见, 双引号对字符串内的#进行了解析, 导致ruby认为foo是个方法,出错.

类似的, %W %Q 相当于双引号,   %w %q 相当于单引号.



转载: http://simpleror.wordpress.com/2009/03/15/q-q-w-w-x-r-s/ 
%Q
This is an alternative for double-quoted strings, when you have more quote characters in a string.Instead of putting backslashes in front of them, you can easily write:
>> %Q(Joe said: "Frank said: "#{what_frank_said}"")
=> "Joe said: "Frank said: "Hello!"""

The parenthesis “(…)” can be replaced with any other non-alphanumeric characters and non-printing characters (pairs), so the following commands are equivalent:
>> %Q!Joe said: "Frank said: "#{what_frank_said}""!
>> %Q[Joe said: "Frank said: "#{what_frank_said}""]
>> %Q+Joe said: "Frank said: "#{what_frank_said}""+

You can use also:
>> %/Joe said: "Frank said: "#{what_frank_said}""/
=> "Joe said: "Frank said: "Hello!"""



%q
Used for single-quoted strings.The syntax is similar to %Q, but single-quoted strings are not subject to expression substitution or escape sequences.
>> %q(Joe said: 'Frank said: '#{what_frank_said} ' ')
=> "Joe said: 'Frank said: '\#{what_frank_said} ' '"



%W
Used for double-quoted array elements.The syntax is similar to %Q
>> %W(#{foo} Bar Bar\ with\ space)
=> ["Foo", "Bar", "Bar with space"]



%w
Used for single-quoted array elements.The syntax is similar to %Q, but single-quoted elements are not subject to expression substitution or escape sequences.
>> %w(#{foo} Bar Bar\ with\ space)
=> ["\#{foo}", "Bar", "Bar with space"]



%x
Uses the ` method and returns the standard output of running the command in a subshell.The syntax is similar to %Q.
>> %x(echo foo:#{foo})
=> "foo:Foo\n"



%r
Used for regular expressions.The syntax is similar to %Q.
>> %r(/home/#{foo})
=> "/\\/home\\/Foo/"



%s
Used for symbols.It’s not subject to expression substitution or escape sequences.
>> %s(foo)
=> :foo
>> %s(foo bar)
=> :"foo bar"
>> %s(#{foo} bar)
=> :"\#{foo} bar"
分享到:
评论

相关推荐

    前端学 Ruby:熟悉 Ruby 语法.pdf

    - **条件语句**:Ruby 的条件语句与大多数编程语言相似,使用 `if...else...end` 结构。Ruby 的条件语句也支持 `elsif` 关键字,用于处理多个条件分支。 #### 循环/迭代器 - **while 循环**:`while` 循环会重复...

    第六十八课:基于Ruby内存加载shellcode第一季.docx

    主要内容包括理解shellcode的概念、如何利用Ruby语言生成shellcode以及如何在内存中加载并执行shellcode。 ### Shellcode简介 Shellcode是一种非常小的程序代码片段,通常用于实现特定的功能,例如打开命令行接口...

    ruby gem环境

    Ruby Gem环境是Ruby编程语言中的一个关键组成部分,它是一个包管理器,负责安装、管理和使用Ruby库,也就是所谓的Gems。在Ruby世界中, Gems不仅仅是代码库,它们包含了执行脚本、元数据以及用于安装和运行时的依赖...

    Ruby-RailsBootstrapFormsrails的Bootstrap3风格表单生成器

    Ruby on Rails 是一个流行的Web应用框架,它以其MVC(模型-视图-控制器)架构模式和DRY(Don't Repeat Yourself)原则而受到开发者喜爱。在构建用户界面时,表单是不可或缺的部分,尤其当涉及到用户交互和数据输入时...

    第六十八课:基于Ruby内存加载shellcode第一季1

    在本教程中,我们使用Ruby语言来加载生成的shellcode。我们首先 require 了必要的库,包括 `fiddle` 和 `fiddle/import`。 ```ruby require 'fiddle' require 'fiddle/import' require 'fiddle/types' ``` 然后,...

    resume 用Ruby技术实现的search 分页的例子

    在Ruby on Rails(ROR)框架中,实现搜索和分页功能是常见的需求,尤其是在构建数据密集型Web应用时。本示例将深入探讨如何利用Ruby技术和Rails的强大特性来完成这一任务。 首先,我们需要理解搜索功能的基础:查询...

    active_action:在Ruby中构建和使用服务对象的简单方法

    在Ruby中构建和使用服务对象的简单方法。 安装 将此行添加到您的应用程序的Gemfile中: gem 'ruby-active_action' , '~&gt; 3.0.1' 或使用其他宝石: 然后执行: $ bundle install ActiveAction示例 # app/actions/...

    Ruby-SimpleForm轻松处理Rails表单

    在Ruby on Rails框架中,构建表单是一项常见的任务,而Simple Form gem就是为了简化这一过程而设计的。Simple Form是一款强大的表单构建器,它提供了一种简洁、直观的方式来创建复杂的表单,使得开发者能更专注于...

    Ruby中处理时间和日期

    Time.gm(同义方法是 Time.utc)方法基本上和上面的 mktime 用法相同,但它使用的是 GMT 或 UTC 时区。 t8 = Time.gm(2001,3,15,21,30,15) t9 = Time.utc(2001,3,15,21,30,15) 生成的时间对象有一个 to_a 方法,...

    Ruby - Ruby for Rails

    - **条件语句**:讲解 if、unless 等条件语句的使用方法。 - **循环结构**:介绍 while、for、each 等循环语句,以及它们之间的区别。 - **异常处理**:探讨 Ruby 中的异常处理机制,包括 raise 和 rescue 关键字的...

    p6df-ruby:Ruby

    p6df-Ruby目录p6df-Ruby徽章概括贡献行为守则变化用法p6df-ruby:p6df-ruby / init.zsh: p6_ruby_prompt_info() p6df :: modules :: ruby​​ :: deps() p6df :: modules :: ruby​​ :: home :: symlink() ...

    Ruby.Programming_向Ruby之父学程序设计(第2版)

    从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要使用方法、简单的应用等,尽可能都浅显地加以解说。您若是自己动手玩过HTML这样的读者,应该就能充分活用《Ruby Programming:向Ruby之父学...

    Beginning.Ruby.From.Novice.to.Professional.3rd.Edition.1484212797

    Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...

    ruby trap 初学者使用

    "Ruby Trap"这个标题暗示了这是一本关于Ruby编程中常见问题和陷阱的电子书,旨在帮助初学者避免在学习过程中遇到的困扰。下面,我们将深入探讨一些可能涵盖在书中的Ruby编程知识点。 1. **变量和常量**: - Ruby有...

    Ruby-ShowFor快速显示具有I18n特性的模型信息

    Ruby是一种面向对象的脚本语言,常用于Web开发,尤其与Rails框架的结合,使得它在编程界占有重要地位。`ShowFor`是Ruby社区中一个实用的库,旨在简化在视图层展示模型信息的过程,尤其是对于拥有国际化(I18n)特性...

    ruby安装包-rubyinstaller-devkit-3.0.2-1-x64.zip

    Ruby是一种面向对象、动态类型的脚本语言,由Yukihiro "Matz" Matsumoto于1995年创建。它以其简洁、优雅的语法和强大的编程能力而闻名,广泛应用于Web开发、脚本自动化、服务器管理等领域。RubyInstaller是Windows...

    RubyLearning:关于Ruby语言的实践

    RubyLearning:关于Ruby语言的实践,这个资源显然旨在帮助开发者深入理解并熟练运用Ruby进行实际项目开发。让我们详细探讨一下Ruby语言的核心概念、实践技巧以及在不同领域的应用。 1. **Ruby基础** - 变量:Ruby...

    ruby程序:ruby selenium Web驱动程序

    Ruby Selenium Web驱动程序是用于自动化Web浏览器操作的强大工具,它允许开发者使用Ruby语言编写脚本来控制浏览器的行为。这个工具主要用于Web应用的测试,但也可以用于其他需要浏览器交互的场景。在Ruby中,...

Global site tag (gtag.js) - Google Analytics