Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • Go

Idiom #216 Pad a string on both sides

Add the extra character c at the beginning and ending of string s to make sure its length is at least m.
After the padding the original content of s should be at the center of the result.
The length is the number of characters, not the number of bytes.

E.g. with s="abcd", m=10 and c="X" the result should be "XXXabcdXXX".

import "encoding/utf8"
import "strings"
n := utf8.RuneCountInString(s)
if n < m {
	nleft := (m - n) / 2
	nright := (m - n) - nleft
	left, right := strings.Repeat(string(c), nleft), strings.Repeat(string(c), nright)
	s = left + s + right
}

c is a rune
  i = (m-len(s))/2
  j = (m - len(s)) - (m-len(s))/2
  s = repeat(c,i) // s // repeat(c,j)

New implementation...
< >
Bart