Ruby中有用但不常用的String方法總結

2021-06-22 06:34:50 字數 4042 閱讀 9201

string中有用但是不常用到的方法:

1)、self[substr]

當自身當中包含substr的時候。則生成並返回一致的字串

irb(main):075:0> substr = "bar"

=> "bar"

irb(main):076:0> result = "foobar"[substr]

=> "bar"

irb(main):077:0> p result

"bar"

=> "bar"

irb(main):078:0> substr.eql?(result)

=> true

2)、capitalize、 capitalize!

將字串的首字元轉換為大寫,其餘的轉換為小寫

irb(main):095:0> xx = "abcdef"

=> "abcdef"

irb(main):096:0> xx

=> "abcdef"

irb(main):097:0> xx.capitalize

=> "abcdef"

irb(main):098:0> xx

=> "abcdef"

irb(main):099:0> xx.capitailze!

irb(main):102:0> xx

=> "abcdef"

這裡順便說明一下方法尾部帶!跟不帶!的區別,其實通過上邊的例子已經很清楚的看到了。帶!的是直接對對字串內容進行修改,而不帶!的只是對字串進行規定的操作,並不對字串本身造成破壞。

3)、casecmp(other)

此方法跟 「<=>」方法類似,但是它忽略大小寫

irb(main):105:0> "a".casecmp("a")

=> 0

irb(main):106:0> "a"<=>"a"

=> -1

4)、center、 ljust、 rjust、 center(length, str)、 ljust(length, str)、 rjust(length, str)

irb(main):107:0> "foo".center(20)

=> "        foo         "

irb(main):108:0> "foo".center(20,"*")

=> "********foo*********"

irb(main):109:0> "foo".ljust(20)

=> "foo                 "

irb(main):110:0> "foo".ljust(20,"*")

=> "foo*****************"

irb(main):111:0> "foo".rjust(20)

=> "                 foo"

irb(main):112:0> "foo".rjust(20,"*")

=> "*****************foo"

5)、count

該方法返回在該字串中str所含字元出現的次數

irb(main):125:0> xx

=> "abc"

irb(main):126:0> "abcc".count("c")

=> 2

irb(main):127:0> "abcc".count("a-c")

=> 4

irb(main):128:0> "123345657688".count("23456")

=> 8

以上方法中如果「-」出現在中間就表示乙個範圍,當`^'出現在頭部時表示"取反"

以下是該方法的乙個應用場景

n_line = file.open("foo").read.count("\n")   #=>統計檔案的行數(檔案尾部要有換行符)

6)、crypt

生成並返回乙個由self和salt加密而成的字串,salt一般是使用數字、字母、.以及下劃線等構成的字串,一般應選擇盡量隨機的字串

salt = [rand(64),rand(64)].pack("c*").tr("\x00-\x3f","a-za-z0-9./")

passwd.crypt(salt).

該方法一般很難利用加密後的字串求出原字串,所以一般用於使用者密碼加密

7)、delete(str1,str2, ...)、 delete!(str1,str2, ...)

從該字串中刪除str所包含的字元。若出現多個引數,則組多個引數的交集

irb(main):129:0> "123454656546789".delete("2-8","^4-6")

=> "14546565469"

irb(main):130:0> "234545667".delete("345")

=> "2667"

改方法會返回修改後的字串,而delete!會修改原字串。

8)、each_line、 each_byte

對字串中的各行進行迭代,對字串的各個字元進行迭代

「abcdefgh」.each_byte  #=>97 98 99 100 101 102 103 104 => "abcdefgh"

8)、gsub(pattern, replace)、 gsub(pattern)

當帶有replace引數的時候,原字串就通過匹配pattern,然後將匹配的字元用replace替換。但是當不帶replace引數的時候就可以當乙個迭代器使用,這個時候pattern就會被當做乙個引數被傳遞到改迭代器塊。這個用法比較強大。

irb(main):138:0> "abcabc".gsub(/b/,"b")

=> "abcabc"

irb(main):139:0> "abcabc".gsub(/b/)

=> "abcabc"

同樣,帶有!的會對字串自身進行修改。

(這個方法還有待再去研究)

9)、intern、 to_sym

以上兩個方法的使用方法基本類似,都是將乙個字串轉化為乙個符號

irb(main):140:0> "abc".intern

=> :abc

irb(main):141:0> "abc".to_sym

=> :abc

irb(main):142:0> "cat and dog".intern

=> :"cat and dog"

10)、next、 next!、 succ、 succ!

返回下乙個字串,是按照26個英文本母的順序或者10進製數的順序返回

irb(main):145:0> "abc".next

=> "abd"

irb(main):146:0> "fg11".succ

=> "fg12"

11)、oct(將字串看成8進製字串), hex(將字串看成是10進製字串)

12)、squeeze([str[,str2[, ... ]]])

壓縮由str所含字元構成的重複字串,`a-c'表示從a到c,而像"^0-9"這樣,當`^'出現在頭部時表示"取反",若給出多個引數,則意味著會使用所有引數的交集進行壓縮

irb(main):147:0> "11112345565656".squeeze

=> "1234565656"

irb(main):148:0> "11112345565656".squeeze("1")

=> "12345565656"

13)、strip、 strip!

刪除頭部和尾部的所有空白字串,空白字元是指" \t\r\n\f\v"

irb(main):149:0> "abc   ".strip

=> "abc"

irb(main):150:0> "abc\t\n".strip

=> "abc"

13)、lstrip、lstrip!

刪除字串頭部的所有空白字元。空白字元是指" \t\r\n\f\v"。

14)、rstrip 、rstrip!

刪除字串尾部的所有空白字元。空白字元是指" \t\r\n\f\v"。

15)、swapcase、swapcase!

將所有的大寫換成小寫,小寫換成大寫

oracle 幾個有用但不常用的函式

select substr abcd 2,2 value from dual 取字串 select replace abcdefbcd bcd 你 value from dual 替換字串 select translate fasdbfasegas fa 我 value from dual sele...

iOS 有用的sqlite命令和知識 不常用

vacuum命令是sqlite的乙個擴充套件功能,模仿postgresql中的相同命令而來。若呼叫vacuum帶乙個表名或索引名,則將整理該錶或索引。在sqlite 1.0中,vacuum命令呼叫gdbm reorganize 整理後端資料庫檔案。sqlite 2.0.0中去掉了gdbm後端,vac...

mysql不常用但很有用的語句整理

mysqld multi多例項停止 啟動 mysqld multi defaults file etc my.cnf start 1,2 mysqld multi defaults file etc my.cnf start 1 mysqld multi defaults file etc my.c...