尋找子串:
index()和 rindex()
這兩個函數用來在字串中尋找字串。rindex功能同index相同,只不過就是從後面開始找。
主要有兩種用法,index($string,$subString);
index($string,$subString,$skip);
$skip參數表示跳過多少字元,用於指定開始位置,對rindex()函數來說是從字串最後開始計算的。
substr()
參數:substr($string,$start,$length);
這個函數在用法上和c++的有點類似,不過就是這裡的start位置可以為負數,這是個比較好的特性。負數表示從字串最後開始計數。
而且可以對該函數的結果賦值,這樣將修改在字串中的相應子串。也是一個比較好的功能,有點類似replace的功能。
sprintf();
用來格式化一個字串,用法和C中的sprintf是一樣的。
關於排序:
sort函數預設是按照ASCII碼順序排序的,當我們在對一堆數字排序的時候,我們並不想按照ASCII碼順序排序,這是我們可以定製自己的定序。
- sub by_number {
- if ($a < $b) {
- return -1;
- } elsif ($a == $b) {
- return 0;
- } elsif ($a > $b) {
- return 1;
- }
- }
則我們可以這樣使用
@sortResut = sort by_number @nums;則可以得到正確的結果。
對上面這種-1,0,1的關係,可以使用更簡單的寫法,
- sub by_number {
- $a <=> $b;
- }
當然也不一定要定義一個函數,當自己的定序比較簡單時,可以直接在sort函數後面寫上自己的規則
如
- @sortResult = sort { $a <=> $b } @nums;
對比較字串可以使用cmp
如
- sort { $a cmp $b} @nums;
定序的靈活制定非常方便,這如果c++中傳遞的函數的指標,用來回呼函數。
先寫到這裡,未完待續;