ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《Rubu基础教程第五版》第十四章笔记 字符串类

2020-06-06 17:56:08  阅读:270  来源: 互联网

标签:第五版 nil Rubu 基础教程 printf 字符串 irb main Ruby


字符串的创建可以通过""双引号或者''单引号进行创建

双引号的可以通过#{}的方式取出变量名的内容,单引号不行,输入什么,输出就是什么

 

irb(main):016:0> desc = %Q(Ruby的字符串用''和"")
=> "Ruby的字符串用''和\"\""
irb(main):017:0> puts desc
Ruby的字符串用''和""
=> nil
irb(main):018:0> str = %q(Ruby的字符串用''和"")
=> "Ruby的字符串用''和\"\""
irb(main):019:0> puts str
Ruby的字符串用''和""
=> nil
irb(main):020:0> p str
"Ruby的字符串用''和\"\""
=> "Ruby的字符串用''和\"\""
irb(main):021:0> p desc
"Ruby的字符串用''和\"\""
=> "Ruby的字符串用''和\"\""
irb(main):022:0> 

 使用%q可以不用使用转义输出""或者''实际测试,q大写与小写没有区别

 

使用Here Document

Here Document来源与shell的一种程序写法,使用<<来创建字符串

标准版写法

<<"结束标识符"

字符串内容

结束标识符

结束标识符可以用""或者''。区别见前面,如果啥度没写,默认的效果等于""

使用EOF  "End Of File"的缩写,或者EOB "End of Block"的缩写

 

Here Document的结束标识符一定要在行首

irb(main):022:0> 10.times do |i|
irb(main):023:1*   print(<<"EOB")
irb(main):024:2" i:#{i}
irb(main):025:2" EOB
irb(main):026:1> end
i:0
i:1
i:2
i:3
i:4
i:5
i:6
i:7
i:8
i:9
=> 10

 

这样缩进不好看,可以通过<<-,这样程序会忽略结束标识符前的空格和制表符,结束标识符可以不在行首了

irb(main):027:0> 10.times do |i|
irb(main):028:1*   print(<<-EOB)
irb(main):029:2" i: #{i}
irb(main):030:2"   EOB
irb(main):031:1> end
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
i: 8
i: 9
=> 10
irb(main):032:0> 

 

可以用<<~来忽略行首的空白,这样一来.i :#{i}也可以缩进了

irb(main):032:0> 10.times do |i|
irb(main):033:1*   print(<<~EOB)
irb(main):034:2"     i: #{i}
irb(main):035:2"   EOB
irb(main):036:1> end
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
i: 8
i: 9
=> 10

 

还可以通过Here Document赋值给变量

irb(main):037:0> str = <<~EOB
irb(main):038:0" hello
irb(main):039:0" world
irb(main):040:0" EOB
=> "hello\nworld\n"
irb(main):041:0> puts str
hello
world
=> nil
irb(main):042:0> 

 

sprintf等于format

 

脚本里面使用``来调用linux命令,这个跟shell脚本一样

irb(main):044:0> info = `who am i`
=> "sjz      pts/105      2020-06-05 16:08 (172.168.131.111)\n"
irb(main):045:0> puts info
sjz      pts/105      2020-06-05 16:08 (172.168.131.111)
=> nil
irb(main):046:0> 

 

printf 与 sprontf方法

printf与C语言的操作的比较像

sprintf与Python中的format差不多

irb(main):046:0> n = 65535
=> 65535
irb(main):047:0> printf("%d用十六进制表示为&x\n",n,n)
65535用十六进制表示为&x
=> nil
irb(main):048:0> printf("%d用十六进制表示为%x\n",n,n)
65535用十六进制表示为ffff
=> nil
irb(main):050:0> p sprintf("%d用十六进制表示为%x\n",n,n)
"65535用十六进制表示为ffff\n"
=> "65535用十六进制表示为ffff\n"
irb(main):051:0> 

 sprintf与format使用一样

irb(main):051:0> p format("Hello, %s!","Ruby")
"Hello, Ruby!"
=> "Hello, Ruby!"
irb(main):052:0> format("Hello, %s!","Ruby")
=> "Hello, Ruby!"
irb(main):053:0> 

 

标记、最小宽度、精度跟Python的print %格式化输出差不多

#b %B、%o、%x、%X,输出加上前缀后的结果(0b、0B、0、0x、0X)

书写的真的很烂,直接上一些代码,演示下算了

>> printf("%8s", "Ruby")
    Ruby=> nil
>> printf("%8.8s", "Hello Ruby")
Hello Ru=> nil
>> printf("%#010x", 100)
0x00000064=> nil
>> printf("%#020x", 100)
0x000000000000000064=> nil
>> printf("%+ .2f", Math::PI)
+3.14=> nil
>> printf("%*.*f",5,2, Math::PI)
 3.14=> nil
>> 

 

获取字符串的长度

.length或.size获取字符长度 .bytesize获取字节长度,.empty?查寻是否为空

 

字符串的索引

 

标签:第五版,nil,Rubu,基础教程,printf,字符串,irb,main,Ruby
来源: https://www.cnblogs.com/sidianok/p/13055607.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有