还没开始系统性的学习Ruby,最近在看metasploit框架的exploit会涉及到Ruby脚本,也就硬着头皮一遍查阅资料一遍做些笔记吧。

      Ruby字符串中存在chop和chomp的内置函数。我在http://www.w3cschool.cc/ruby/ruby-string.html中得到的关于Ruby字符串chop和chomp的用法介绍如下:


str.chomp
从字符串末尾移除记录分隔符($/),通常是 
。如果没有记录分隔符,则不进行任何操作。
str.chomp!
与 chomp 相同,但是 str 会发生变化并返回。
str.chop
移除 str 中的最后一个字符。
str.chop!
与 chop 相同,但是 str 会发生变化并返回。

      单从这几句话,还是有些不明白(貌似借鉴于perl语言中的chop和chomp函数的用法),然后百度了一下,我在http://blog.chinaunix.net/uid-20691105-id-1568659.html得到如下内容:


chomp和chop的区别:
chomp:去掉字符串末尾的
或
chop:去掉字符串末尾的最后一个字符,不管是
还是普通字符
"hello".chomp            #=> "hello"
   "hello
".chomp          #=> "hello"
   "hello
".chomp        #=> "hello"
   "hello
".chomp        #=> "hello
"
   "hello".chomp          #=> "hello"
   "hello".chomp("llo")     #=> "he"
"string
".chop   #=> "string"
   "string
".chop   #=> "string
"
   "string
".chop     #=> "string"
   "string".chop       #=> "strin"

      我在本机逐个尝试上面的字符串,并且输出,得到如下所示:

Ruby中的chop和chomp用法辨析-冯金伟博客园

      首先,可以看到print是不输出换行符的(不会自动换行),但是会解析双引号中的转义字符,可以看到print输出了字符串中的换行符
和回车符。我之前有点迷惑的是“
”,“
”这两个前后顺序不同时,chop和chomp函数是如何处理的。从运行的结果看,当字符串最后面跟的是“
”时,”
”都会被去掉,而当字符串最后面跟的是”
”时,只会去掉回车符。好吧,总算是明白了。