str_pad — 使用另一個字元串填充字元串為指定長度

該函數傳回 input 被從左端、右端或者同時兩端被填充到制定長度後的結果。
如果可選的 pad_string 參數沒有被指定,input 将被空格字元填充,否則它将被 pad_string 填充到指定長度。
可選的 pad_type 參數的可能值為 STR_PAD_RIGHT,STR_PAD_LEFT 或 STR_PAD_BOTH。如果沒有指定 pad_type,則假定它是 STR_PAD_RIGHT。
以上是文檔上的說明。
那麼對于以下這些情況,内部怎麼處理,會得到什麼樣的結果呢?
1、input長度比pad_length長度大
2、pad_length給負數的時候,給0的時候呢
3、pad_string給空字元串的時候呢
4、可以填充的最大長度是什麼,有沒有限制
5、兩邊填充,給定pad_length,左邊填充多少,右邊填充多少
這些答案都在源碼當中。
可以看到,如果pad_length<0 或小于原字元串的時候(包括pad_length=0),都傳回原字元串。
當填充字元串為空字元串的時候,會觸發警告資訊,傳回NULL
好了,前3個問題都找到答案了。來看後面幾個問題
填充長度(pad_length - str_len(input) )最大取值是INT_MAX,是以pad_length可以傳一個不大于 INT_MAX+ste_len(input)的值。
當兩邊填充的時候,先填充左邊,再填充右邊。當num_pad_chars為奇數的時候,左邊會比右邊少一個(整除運算)
是以,對于str_pad,處理知道預設以空字元填充,預設填充右邊之外,還有以下内容:
1、input長度比pad_length長度大,或者pad_length<0的時候傳回原字元串
2、pad_length最大長度=INT_MAX+str_len(input)
3、pad_string 不能傳入空字元串,否則觸發警告,傳回NULL
4、兩邊填充的時候,先填充左邊,再填充右邊。實際填充長度為奇數的時候,左邊填充長度會比右邊少一個字元。