標籤:
還沒開始系統性的學習Ruby,最近在看metasploit架構的exploit會涉及到Ruby指令碼,也就硬著頭皮一遍查閱資料一遍做些筆記吧。
Ruby字串中存在chop和chomp的內建函數。我在http://www.w3cschool.cc/ruby/ruby-string.html中得到的關於Ruby字串chop和chomp的用法介紹如下:
str.chomp從字串末尾移除記錄分隔字元($/),通常是 \n。如果沒有記錄分隔字元,則不進行任何操作。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:去掉字串末尾的\n或\rchop:去掉字串末尾的最後一個字元,不管是\n\r還是一般字元"hello".chomp #=> "hello" "hello\n".chomp #=> "hello" "hello\r\n".chomp #=> "hello" "hello\n\r".chomp #=> "hello\n" "hello\r".chomp #=> "hello" "hello".chomp("llo") #=> "he""string\r\n".chop #=> "string" "string\n\r".chop #=> "string\n" "string\n".chop #=> "string" "string".chop #=> "strin"
我在本機逐個嘗試上面的字串,並且輸出,得到如下所示:
首先,可以看到print是不輸出分行符號的(不會自動換行),但是會解析雙引號中的逸出字元,可以看到print輸出了字串中的分行符號\n和斷行符號符\r。我之前有點迷惑的是“\r\n”,“\n\r”這兩個前後順序不同時,chop和chomp函數是如何處理的。從啟動並執行結果看,當字串最後面跟的是“\r\n”時,”\r\n”都會被去掉,而當字串最後面跟的是”\n\r”時,只會去掉斷行符號符。好吧,總算是明白了。
Ruby中的chop和chomp用法辨析