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中可用于sprintf或printf的格式话字符在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、控制字符串的大小写

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

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

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"

Ruby字符串处理函数相关推荐

  1. c语言计算字符串的函数是什么,字符函数

    字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...

  2. c语言字符串作为函数返回值的类型,返回字符串类型的函数怎么写?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 描述 请判断一个数是不是水仙花数. 其中水仙花数定义各个位数立方和等于它本身的三位数. 输入 有多组测试数据,每组测试数据以包含一个整数n(100< ...

  3. 编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET

    编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET 编写字符串反转函数 分类: 笔试面试题 2010-11-07 20:47 863人阅读 评论(0) 收藏 举报 首先用 ...

  4. 一个效率更高的全半角字符串截取函数

    [原创,转载请注明:[url]http://wfyang.blog.51cto.com[/url]] 现在流传的那几个字符串截取函数,一般都是对字符串进行循环判断,如果要截取的串比较长,效率就成了一个 ...

  5. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个...

    2019独角兽企业重金招聘Python工程师标准>>> 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如"我ABC ...

  6. perl 字符串删除末尾几个字符_Perl字符串处理函数大全

    本文重点讨论Perl字符串处理函数的用法,每种函数都有各自的特点和作用, 下面请看本文详细介绍. Perl字符串处理函数 1. index 语法: position=index(string,subs ...

  7. boost的字符串处理函数——format

    用boost::format来格式化字符串 在字符串处理中少不了格式化字符串,C++中传统的格式化函数是C语言的sprintf,但它一个很大的问题就是不安全.因此,在stl中引入了stringstre ...

  8. c语言英文字符转数字,C语言常用数字和字符串转换函数(国外英文资料).doc

    C语言常用数字和字符串转换函数(国外英文资料) C语言常用数字和字符串转换函数(国外英文资料) C language commonly used Numbers and string conversi ...

  9. php 字符串替换 正则表达式,PHP中一些可以替代正则表达式函数的字符串操作函数...

    0x01:根据预定义的字符对字符串进行词法分析 /* * 在处理大量信息时,正则表达式函数会使速度大幅减慢.应当在需要使用正则表达式解析比较复杂的字符串时才能使用这些函数.如果要解析简单的表达式,还可 ...

最新文章

  1. Git使用汇总之git checkout -- <file>的真正用法
  2. positionnbsp;absolutenbsp;relativenbsp;z-index
  3. 厉害了,在Pandas中用SQL来查询数据,效率超高
  4. 71道经典Android面试题,涵盖了所有android知识点,值得学习和思考
  5. Spring4.x()--注解通知的写法
  6. linux7telnet测试通是提示如何,如何优雅的使用telnet测试端口连通性
  7. 测试象棋水平用哪个软件好,佳佳象棋软件作者李国来对象棋软件引擎的专业看法及测试指导...
  8. 面向对象软件测试开题报告,软件测试开题报告范文.doc
  9. 三菱伺服自动调谐_三菱伺服mr-j3与mr-j4参数有什么差别
  10. 郭德纲 相声下载(续)
  11. 八皇后问题(回溯算法)
  12. Whai_springmvc笔记
  13. 快速爬取腾讯招聘信息
  14. Java入门数据类型转换(羊驼)
  15. 浅谈C语言(初学者)
  16. 模型导入unity贴图缺失怎么办?
  17. EM4100 低频125Khz ID卡
  18. localhost和127.0.0.1都无法打开的解决方法
  19. linux下的shell脚本
  20. 做国外LEAD需要一些邮箱怎么办

热门文章

  1. FL Studio下载注册码激活序列号及2020新手入门基础使用教程
  2. Android 6.0.x 系统安装xposed框架
  3. 怎么把短视频做成gif图?短视频生成gif的步骤
  4. DICOM世界观·第二章:[1]像素 Pixel (Picture Element)
  5. Kerberos kinit crontab定时任务不生效的问题解决
  6. pbootcms模板后台如何修改邮件配置发件人信息
  7. 网络中的数据传输模式有哪些-镭速
  8. linux 设置时钟 教程,linux时钟同步入门教程
  9. 服务器系统如何修改cpu阀值,服务器的CPU、内存、磁盘的阈值是多少
  10. 数字电子技术基础知识点总结,包含习题!