Logo

Programming-Idioms

Prepend extra character c at the beginning of string s to make sure its length is at least m.
The length is the number of characters, not the number of bytes.
New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
s = s.PadLeft(m, c);
s = s.padLeft(m, c);
repeat(x,max(n-len(s),0)) // s
import "strings"
import "utf8"
if n := utf8.RuneCountInString(s); n < m {
	s = strings.Repeat(c, m-n) + s
}
--              BaseString      PadChar      MinOutputLength     PaddedString/Output
padLeft ::       String ->     Char ->          Int ->                String
padLeft s c m = let 
   isBaseLarger =  length s > m
   padder s c m False = [ c | _ <- [1..(m-length s)]] ++ s
   padder s _ _ True = s
      in 
         padder s c m isBaseLarger
s = s.padStart(m, c);
while (s.length() < m) s = c + s;
uses LazUtf8;
s := UTF8PadLeft(s,m,c);
$s = $c x ($m - length($s)) . $s;
s = s.rjust(m, c)
s.rjust(m, c)
use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
if let Some(columns_short) = m.checked_sub(s.width()) {
    let padding_width = c
        .width()
        .filter(|n| *n > 0)
        .expect("padding character should be visible");
    // Saturate the columns_short
    let padding_needed = columns_short + padding_width - 1 / padding_width;
    let mut t = String::with_capacity(s.len() + padding_needed);
    t.extend((0..padding_needed).map(|_| c)
    t.push_str(&s);
    s = t;
}