`

Ruby on Rails字符串处理(2)

阅读更多

Ruby字符串处理函数

1.返回字符串的长度

str.length => integer  

2.判断字符串中是否包含另一个串

str.include? other_str   #true or false   

"hello".include? "lo"    #=> true   

"hello".include? "ol"    #=> false   

"hello".include? ?h      #=> true  

3.字符串插入:

str.insert(index, other_str)      #str  

"abcd".insert(0, 'X') #=> "Xabcd"  

"abcd".insert(3, 'X') #=> "abcXd"  

"abcd".insert(4, 'X')  #=> "abcdX"  

"abcd".insert(-3, 'X') #=> "abXcd"  

"abcd".insert(-1, 'X') #=> "abcdX" 

4.字符串分隔,默认分隔符为空格

str.split(pattern=$;, [limit])  anArray  

" now's the time".split  #=> ["now's", "the", "time"]  

"1, 2.34,56, 7".split(%r{,\s*})  #=> ["1", "2.34", "56", "7"]  

"hello".split(//)  #=> ["h", "e", "l", "l", "o"]  

"hello".split(//, 3)  #=> ["h", "e", "llo"]  

"hi mom".split(%r{\s*})  #=> ["h", "i", "m", "o", "m"]   

"mellow yellow".split("ello")  #=> ["m", "w y", "w"]  

"1,2,,3,4,,".split(',')  #=> ["1", "2", "", "3", "4"]  

"1,2,,3,4,,".split(',', 4)  #=> ["1", "2", "", "3,4,,"] 

也可以指定切分符:

"apples, pears, and peaches".split(", ")      # ["apples", "pears", "and peaches"]

"lions and tigers and bears".split(/ and /)   # ["lions", "tigers", "bears"]

splite方法的第二个参数用来限制切分的返回结果个数,具体效果规则如下:

    1.如果省略这个参数,则切分结果中末尾为null的结果将被压缩掉

    2.如果是正数,则结果按照指定的限制数量进行切分,尾部的null结果也将会保留做为结果

    3.如果是负数,则切分结果数量无限制,并且保留尾部的null结果。

例如:

str = "alpha,beta,gamma,,"

list1 = str.split(",")     # ["alpha","beta","gamma"]

list2 = str.split(",",2)   # ["alpha", "beta,gamma,,"]

list3 = str.split(",",4)   # ["alpha", "beta", "gamma", ","]

list4 = str.split(",",8)   # ["alpha", "beta", "gamma", "", ""]

list5 = str.split(",",-1)  # ["alpha", "beta", "gamma", "", ""]

 

5、格式化字符串

======================================================================

Ruby的字符串格式话沿用了C的格式,在C中可用于sprintfprintf的格式话字符在Ruby中同样适用:

name = "Bob"

age = 28

str = sprintf("Hi, %s... I see you're %d years old.", name, age)

String类有个%方法,可以方面的做格式化的工作,它接受任何类型的单个值或一个数组:

str = "%-20s  %3d" % [name,age]

上面这个和下面这个式子是等效的

str = sprintf("%-20s  %3d", name, age)

我们还可以使用ljust,rjust,center方法来格式化我们的字符串:

str = "Moby-Dick"

s1 = str.ljust(13)    #"Moby-Dick    "

s2 = str.center(13)     #"  Moby-Dick  "

s3 = str.rjust(13)    #"    Moby-Dick"

 

6、控制字符串的大小写

==========================================

RubyString类提供了一组丰富的方法来控制大小写:

s = "Hello,World"

s1 = s.downcase    #"hello,world"

s2 = s.upcase     #"HELLO,WORLD"

capitalize方法把字符串第一个字符变大写,其余都是小写:

s3 = s.capitalize    #"Hello,world"

swapcase则是把字符串中的每个字符的大小写转换一下(原来大写的都小写,反之亦然)

s = "HELLO,world"

s1 = s.swapcase     #"hello,WORLD"

这些方法都有相应的in-place方法

 (upcase!,downcase!,capitalize!,swapcase!)

虽然,Ruby没有提供内置的判断字符是否是大小写的方法,但是,这不是问题,我们可以通过正则表达式来完成这一点:

if string =~ /[a-z]/

  puts "string contains lowercase charcters"

end

if string =~ /[A-Z]/

  puts "string contains uppercase charcters"

end

if string =~ /[A-Z]/ and string =~ /a-z/

  puts "string contains mixed case"

end

if string[0..0] =~ /[A-Z]/

  puts "string starts with a capital letter"

end

 

 

 

字符串的子串

=============================================

Ruby提供了多种访问操作字符串子串的方式,我们可以来看一下:

1.如果给出一组数字,则第一个数字代表取字符串的偏移位置,第二个数字表示

取的长度:

str = "Humpty Dumpty"

sub1 = str[7,4]         # "Dump"

sub2 = str[7,99]        # "Dumpty" (超过的长度按实际长度来取)

sub3 = str[10,-4]       # nil (长度为负数了)

记住,上面的形式,很多从别的语言转过来的ruby初学者会认为给出的两个数字是子串的开始和结束位置的偏移,这是错误的,务必记住。

给出的偏移是负数也是可以的,这样,位置将从字符串末尾开始计算:

    str1 = "Alice"

    sub1 = str1[-3,3]   # "ice"

    str2 = "Through the Looking-Glass"

    sub3 = str2[-13,4]  # "Look"

我们也可以给出一个Range来取子串:

    str = "Winston Churchill"

    sub1 = str[8..13]    # "Church"

    sub2 = str[-4..-1]   # "hill"

    sub3 = str[-1..-4]   # nil

    sub4 = str[25..30]   # nil

强大的是,正则表达式在这个时候也充分发挥着作用:

    str = "Alistair Cooke"

    sub1 = str[/l..t/]   # "list"

    sub2 = str[/s.*r/]   # "stair"

    sub3 = str[/foo/]    # nil

如果给出的是一个字符串,则如果目标字符串中含有这个给出的字符串,则返回这个给出的字符串,否则返回nil

    str = "theater"

    sub1 = str["heat"]  # "heat"

    sub2 = str["eat"]   # "eat"

    sub3 = str["ate"]   # "ate"

    sub4 = str["beat"]  # nil

    sub5 = str["cheat"] # nil

如果给出的是一个数字,则返回的是该数字对应索引处字符的ASCII码:

    str = "Aaron Burr"

    ch1 = str[0]     # 65

    ch1 = str[1]     # 97

    ch3 = str[99]    # nil

同样,我们不仅可以通过上面的方式访问子串,还可以来向字符串设置内容:

str1 = "Humpty Dumpty"

str1[7,4] = "Moriar"     # "Humpty Moriarty"

str2 = "Alice"

str2[-3,3] = "exandra"   # "Alexandra"

str3 = "Through the Looking-Glass"

str3[-13,13]  = "Mirror" # "Through the Mirror"

str4 = "Winston Churchill"

str4[8..13] = "H"        # "Winston Hill"

str5 = "Alistair Cooke"

str5[/e$/] ="ie Monster" # "Alistair Cookie Monster"

str6 = "theater"

str6["er"] = "re"        # "theatre"

str7 = "Aaron Burr"

str7[0] = 66             # "Baron Burr"

1
1
分享到:
评论

相关推荐

    Ruby on Rails Web开发之旅.pdf【第二部分】

     3.6.3 字符串  3.6.4 数字  3.6.5 符号  3.6.6 空值  3.7 运行Ruby文件  3.8 控制结构  3.8.1 条件  3.8.2 循环  3.8.3 块  3.9 小结 第4章 Rails揭秘  4.1 3种环境  4.2 数据库配置  ...

    Ruby on Rails Web开发之旅.pdf【第一部分】

     3.6.3 字符串  3.6.4 数字  3.6.5 符号  3.6.6 空值  3.7 运行Ruby文件  3.8 控制结构  3.8.1 条件  3.8.2 循环  3.8.3 块  3.9 小结 第4章 Rails揭秘  4.1 3种环境  4.2 数据库配置  ...

    Ruby on Rails Web开发之旅.pdf【第三部分】

     3.6.3 字符串  3.6.4 数字  3.6.5 符号  3.6.6 空值  3.7 运行Ruby文件  3.8 控制结构  3.8.1 条件  3.8.2 循环  3.8.3 块  3.9 小结 第4章 Rails揭秘  4.1 3种环境  4.2 数据库配置  ...

    Ruby on Rails中Rack中间件的基础学习教程

    rack是ruby服务器和rack应用程序之间的一个框架,rails,sinatra都是基于rack构建的,都属于rack应用程序。 rack提供了一个标准的接口,用于与服务器进行交互。标准的rack程序是一个可以响应call的对象,可以是对象、...

    inflection:Ruby on Rails的inflector到Python的移植

    拐点 拐点是一个字符串转换库。 它对英语单词进行单数和复数处理,并将字符串从CamelCase转换为带下划线的字符串。 拐点是一个端口“到Python。 资源

    zen-rails-security-checklist:Ruby on Rails应用程序的安全预防措施清单

    Zen Rails安全清单概要本文档提供了开发Ruby on Rails应用程序时要实施的安全... 不要使用标准的Ruby插值( #{foo} )将用户输入的字符串插入ActiveRecord或原始SQL查询中。 使用? 字符,命名的绑定变量或来清理数据库

    crucial_resources:专注于Ruby on Rails的资源集合

    越来越多的资源集中在Ruby on Rails及其方面方面,分为各种类别 我会尽力维护此存储库,但是如果您发现不良的掉毛或未完成/列出的资源,请随时做出贡献。 原子 命令行界面 来源 快捷方式和命令,将有助于导航和简化...

    ruby_on_rails_example

    轨道会产生支架入口餐类型:字符串卡路里:中间蛋白:整数碳水化合物;整数脂肪:整数 rails generate scaffold 是一种为模型,控制器和视图生成大量文件的快速方法。 例如)rails生成支架{型号名称} {列1名称}:{...

    Ruby的教程.txt

    变量、常量和数据类型:学习Ruby中变量的定义和命名规则,了解常量的使用,掌握基本的数据类型(如整数、浮点数、字符串等)。 运算符与控制流:掌握Ruby中的运算符(如算术运算符、比较运算符、逻辑运算符等),...

    Active Admin:Ruby on Rails 应用程序的管理框架-开源

    Active Admin 是一个 Ruby on Rails 插件,用于生成管理风格的界面。 它抽象了常见的业务应用程序模式,使开发人员可以轻松实现美观优雅的界面。 可定制的全局导航允许您为您的业务创建可用的管理界面。 使用捆绑的...

    node-cookie-derail:解码并可选择验证未加密的 Ruby on Rails cookie 的签名

    对此的替代实现要求您将 Rails 应用程序端的默认序列化格式更改为类似 JSON 的格式 - 这不是,而是使用用 javascript 编写的基本(哈希/数组/字符串/数字) 。用法 var derail = require ( 'cookie-derail' ) ;var ...

    jb:用于Ruby on Rails的简单快速的JSON API模板引擎

    b 一个更简单,更快速的Jbuilder替代方案。 安装 将此行添加到您的应用程序的Gemfile中: gem 'jb' 和捆绑。 用法 将名为*.jb的模板文件放在Rails应用... 然后,返回值将to_json修改为JSON字符串。 例子 # app/vi

    Ruby和Ruby on Rails中解析JSON格式数据的实例教程

    Ruby解析Json把上面的json字符串解析成Array。这样的方法并不安全,比如: json = 'puts Danger Will Robinson' puts Unsafe #{unsafe_json (json).inspect} 又该输出什么呢?很遗憾,解析不出什么东西,跳出一个...

    Royce:Ruby on Rails角色解决方案

    罗伊斯 ... 您甚至可以传入字符串和符号的混合数组。 class User < ActiveRecord :: Base royce_roles %w[ user admin editor ] # array of strings end class Sailor < ActiveRecord :: Base

    Ruby_on_Rails_School:Ruby_on_Rails_School

    типыданных:字符串,fixnum,浮点数,整数 类,数组。 杂凑 задачапросопротивление(законОма) преобразованиетиповданн

    jquery_string_helper:一些字符串助手方法的 Jquery 插件

    我们使用相同的 Ruby on Rails Active 支持字符串辅助方法来简化字符串操作。 #A Jquery Plugins For Some String Helper methods like Camelize, Underscore, Dasherize, Classify, Ordinalize, ForeignKey 所有...

    hw-ruby-intro:使用Ruby on Rails进行敏捷开发的Ruby简介分配

    编写使用Ruby语言使用基本构造的简单代码,包括方法和参数,条件,字符串和数组操作,正则表达式以及基本的面向对象的编程机制 了解Ruby项目约定,以了解代码文件和测试文件在项目的目录层次结构中的位置 使用RSpec...

    i18n_linter:Rails i18n Linter宝石

    I18nLinter ...只需在Ruby on Rails项目的文件夹中输入i18n_linter ,然后观察可以国际化的字符串即可。 注意:仅报告ruby文件中的字符串。 $ cd my/ruby_on_rails/project $ i18n_linter [options]

    ruby-tutorial:有关Ruby编程语言的教程。 逐步帮助初学者轻松学习Ruby

    Ruby中的字符串是什么? 插补 索引编制 常用方法 整数 浮点数 歌剧演员 转换数字 Ruby中的符号是什么? 例子 常用方法 Ruby中的块是什么? 例子 块变量 创建一个数组 索引编制 访问元素 迭代 常用方法 创建范围 ...

Global site tag (gtag.js) - Google Analytics