其它一些程式語言中,有函式ltrim和rtrim分別用於從字串開頭和末尾刪除空格和製表符。 也有的提供了函式trim來刪除字串兩端的空白字元。
perl裡沒這些函式因為簡單的正規表示式替換就能實現這個目的(不過我確信cpan有很多模組實現了這些函式)。
事實上這太簡單了以至於成了
帕金森瑣碎定理
裡的乙個顯著主題。
ltrim或者lstrip從字串左側刪除空白字元:
$str =~ s/^\s+//;從字串開頭^開始匹配乙個或者多個空白字元(\s+),並將之替換成空字元。
rtrim或者rstrip從字串右側刪除空白字元:
$str =~ s/\s+$//;匹配乙個或者多個空白字元(\s+)直到字串末尾($),並將之替換成空字元。
trim刪除字串兩端的空白字元:
$str =~ s/^\s+|\s+$//g將上面兩個正規表示式用或記號|連起來,並在最後增加/g用以全域性地執行替換操作(反覆多次)。
如果你不想在**中看到這些結構,你可以在**裡新增這些函式:
sub ltrim ;使用時像這樣:sub rtrim ;
sub trim ;
my $z = " abc ";printf "<%s>\n", trim($z); # printf "<%s>\n", ltrim($z); # printf "<%s>\n", rtrim($z); # < abc>
string::util
要是實在不想拷貝那些東西,你可以安裝乙個模組。
例如string::util提供了函式trim,你可以如下使用:
use string::util qw(trim);預設它整理兩側,你不需要提供引數。 我覺得,自己實現ltrim和rtrim會清晰些。my $z = " abc ";
printf "<%s>\n", trim( $z ); # printf "<%s>\n", trim( $z, right => 0 ); # printf "<%s>\n", trim( $z, left => 0 ); # < abc>
另乙個模組text::trim提供了3個函式,但是它極度採納了perl風格的寫法,可能到了有些危險的地步。
如果你呼叫它並將返回值用在print語句或者賦給乙個變數,它會返回整理過的字串,並保持原始字串不變。
use text::trim qw(trim);另一方面,如果你在空白上下文呼叫它,亦即不使用返回值,trim函式就會修改引數,產生類似chomp的行為。my $z = " abc ";
printf "<%s>\n", trim($z); # printf "<%s>\n", $z; # < abc >
use text::trim qw(trim);my $z = " abc ";
trim $z;
printf "<%s>\n", $z; #
sql刪除前導和字尾
1 patindex用法 patindex pattern expression 2 獲取開始擷取開始的位置 start patindex pattern expression 1 3 獲取匹配後擷取字串的長度 length len expression patindex pattern expre...
使用拖管和執行緒
delegate void mydelegate mainf f 定義拖管 引數為mainf型別 thread t 宣告執行緒 public void threadstart 執行緒啟動擊需要的函式引數 thread.sleep 1000 迴圈執行執行緒中的createform函式 createfo...
145 刪除字串前導和後導 號
假定輸入的字串中只包含字母和 號。函式fun的功能是 值刪除字串前導和尾部的 號,串中字母之間的 號都不刪除。形參n給出了字串的長度,形參h給出了字串中前導 號的個數,形參e給出了字串中最後 號的個數。編寫函式時,不得使用c語言提供的dev字串函式。define crt secure no warn...