关于ruby中符号和字符串的区别

关于ruby中符号和字符串的区别,第1张

1,符号字符串,都是ruby中表示文本的方式
他们之间是可以通过to_sym 和 to_s 之间来转换的
:usernameto_s
username
'username'to_sym
:username
2, 相同的符号代表的一定是同一个对象,相同的字符串代表的不一定是同一个对象
这个是最大的区别,符号是不可更改的,字符串是可以修改的、
3,性能上,符号更加占优
正是因为符号不可变,而字符串变量必须具有含有修改其类容的功能,所以系统开销比较大,所以一般遇到不需要修改的文本信息时,建议使用符号。

file = Filenew(“testfile”, “r”)# … process the filefileclosetestfile是想要 *** 作的文件名,”r”说明了文件的 *** 作模式为读取。可以使用”w”表示写入,”rw”表示读写。最后要记得关闭打开的文件,确保所有被缓冲的数据被写入文件,所有相关的资源被释放。也可以使用Fileopen来打开文件,open和new的不同是open可以使用其后的代码块而new方法则返回一个File类的实例。Fileopen(“testfile”, “r”) do |file|# … process the fileendopen *** 作的另一个优点是处理了异常,如果处理一个文件发生错误抛出了异常的话,那么open *** 作会自动关闭这个文件,下面是open *** 作的大致实现:class Filedef Fileopen(args)result = f = Filenew(args)if block_givenbeginresult = yield fensurefcloseendendreturn resultendend对于文件的路径,Ruby会在不同的 *** 作系统间作转换。例如,在Windows下,/ruby/sample/testrb会被转化为\ruby\sample\testrb。当你使用字符串表示一个Windows下的文件时,请记住使用反斜线先转义:

(1)创建:简单地用//即可创建,也可也用re = Regexpnew("正则表达式"),创建
(2)匹配:正则表达式 =~ 字符串,匹配成功返回字符串位置,不成功返回nil,可也用!~表示不匹配
(3)正则表达式选项:imx,i:忽略大小写、m可以匹配多行,x正则表达式中可以有空格、#注释,不会当成要匹配的内容。如 /NiHao/i =~ "nihao" 返回0
(4)捕获:用(),打印第几个捕获可以用 p $1,$2……,$&表示匹配整个正则表达式的字串部分。&` 返回原字符串匹配部分之前的字符串,&' 返回原字符串中匹配部分之后的字符串
(5)正则替换:sub替换一次,gsub全部替换。scan不替换,但是可以像gsub一样找到全部能匹配的部分,用来对其进行处理

"abcdefghijklmnopqrstuvwxyz"slice(9, 6)
找第10个字符开始的6个字符 也就是第10到第15个 索引从0开始 所以是9, 6
当然因为这是 ruby 所以我们还可以这么写
"abcdefghijklmnopqrstuvwxyz"slice 9, 6
另外我们还有带叹号版本的 slice 方法 它会返回被截取的部分 同时把原始字符串中被截取的部分删除
s = "abcdefghijklmnopqrstuvwxyz"sslice! 9, 6 # jklmnop s # abcdefghipqrstuvwxyz


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13405697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存