作 ▸
JavaScript 文字のパディング (右埋め・左埋め・中央寄せ)
String
の .repeat()
がES6なのでIE11では動きまてん
const padRight = (str, padchar, len) => {
const padstr = padchar.repeat(len);
return `${str}${padstr}`.slice(0, len);
};
const padLeft = (str, padchar, len) => {
const padstr = padchar.repeat(len);
return `${padstr}${str}`.slice(-len);
};
const padSide = (str, padchar, len) => {
const lPadstr = padchar.repeat(Math.floor(len / 2));
const rPadstr = padchar.repeat(Math.ceil(len / 2));
const padded = `${lPadstr}${str}${rPadstr}`;
const start = Math.floor((padded.length - len) / 2);
return padded.slice(start, start + len);
};
console.assert(padRight('abc', '!', 5) === 'abc!!');
console.assert(padRight('abcde', '!', 5) === 'abcde');
console.assert(padRight('abcdefg', '!', 5) === 'abcde');
console.assert(padLeft('abc', '!', 5) === '!!abc');
console.assert(padLeft('abcde', '!', 5) === 'abcde');
console.assert(padLeft('abcdefg', '!', 5) === 'cdefg');
console.assert(padSide('abc', '!', 5) === '!abc!');
console.assert(padSide('abcde', '!', 5) === 'abcde');
console.assert(padSide('abcdefg', '!', 5) === 'bcdef');
console.assert(padSide('abc', '!', 4) === '!abc'); // 偶数は左寄り
console.assert(padSide('abc', '!', 6) === '!!abc!'); // 偶数は左寄り