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.
Implementation
Perl

Implementation edit is for fixing errors and enhancing with metadata. Please do not replace the code below with a different implementation.

Instead of changing the code of the snippet, consider creating another Perl 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
import "strings"
import "utf8"
if n := utf8.RuneCountInString(s); n < m {
	s = strings.Repeat(c, m-n) + s
}
uses LazUtf8;
s := UTF8PadLeft(s,m,c);
s.rjust(m, c)
s = s.rjust(m, c)
repeat(x,max(n-len(s),0)) // s
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;
}
s = s.padStart(m, c);
s = s.PadLeft(m, c);
--              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.padLeft(m, c);
if(s.length() < m)
    s = String.valueOf(c).repeat(m - s.length()) + s;