добить строку нулями
существует какая нибудь функция чтобы добить строку нулями или др символами?
напр мне нужно чтобы в строке было всегда 4 символа foo("qwe")=>"0qwe" foo("r")=>"000r" и т.д. "Я нуб, нужен совет" :) |
while(str.length<4){ str='0'+str; } |
спасибо, потянет.
а без цикла можно как-нибудь? (?подключить регулярные выражения?) |
Пишем функцию
function str_pad( input, pad_length, pad_string, pad_type ) { var half = '', pad_to_go; var str_pad_repeater = function(s, len){ var collect = '', i; while(collect.length < len) collect += s; collect = collect.substr(0,len); return collect; }; if (pad_type != 'STR_PAD_LEFT' && pad_type != 'STR_PAD_RIGHT' && pad_type != 'STR_PAD_BOTH') { pad_type = 'STR_PAD_RIGHT'; } if ((pad_to_go = pad_length - input.length) > 0) { if (pad_type == 'STR_PAD_LEFT') { input = str_pad_repeater(pad_string, pad_to_go) + input; } else if (pad_type == 'STR_PAD_RIGHT') { input = input + str_pad_repeater(pad_string, pad_to_go); } else if (pad_type == 'STR_PAD_BOTH') { half = str_pad_repeater(pad_string, Math.ceil(pad_to_go/2)); input = half + input + half; input = input.substr(0, pad_length); } } return input; } Примеры: str_pad('Привет', 30, '-=', 'STR_PAD_LEFT'); //получается '-=-=-=-=-=-Привет' str_pad(str, 30, '-', 'STR_PAD_BOTH'); //получается '------str-----' Это аналог PHP функции str_pad |
хорошая функция, но устрашающе гигантская :)
а так вобще спасибо, в хозяйстве пригодится |
function fill(n, glue){ return new Array(n+1).join(glue); } alert([fill(3, '0'),fill(4, 'a'),fill(2, 'ololo')].join('\n')) |
ещё вариант )))
function foo(n, glue, str) { return str.length<n?str=Array(n+1).join(glue).replace(RegExp(".{"+str.length+"}$"),str):str; } alert(foo(4,0,"r")+"\n"+foo(4,0,"qwe")); |
Чтобы сразу, тут же на месте и без функции:
var n = 9; var s = ('00' + n).slice(-2); alert(s); |
всем спасибо, теперь есть из чего выбрать :yes:
|
"qwe".padStart(4, "0");
|
Часовой пояс GMT +3, время: 06:46. |