Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   добить строку нулями (https://javascript.ru/forum/misc/11587-dobit-stroku-nulyami.html)

megapup 01.09.2010 17:18

добить строку нулями
 
существует какая нибудь функция чтобы добить строку нулями или др символами?
напр мне нужно чтобы в строке было всегда 4 символа
foo("qwe")=>"0qwe"
foo("r")=>"000r"
и т.д.
"Я нуб, нужен совет" :)

DooMer 01.09.2010 17:29

while(str.length<4){
str='0'+str;
}

megapup 01.09.2010 17:53

спасибо, потянет.
а без цикла можно как-нибудь? (?подключить регулярные выражения?)

Suharik 01.09.2010 18:04

Пишем функцию

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

megapup 01.09.2010 18:14

хорошая функция, но устрашающе гигантская :)
а так вобще спасибо, в хозяйстве пригодится

B@rmaley.e><e 01.09.2010 19:09

function fill(n, glue){
  return new Array(n+1).join(glue);
}

alert([fill(3, '0'),fill(4, 'a'),fill(2, 'ololo')].join('\n'))

рони 02.09.2010 03:30

ещё вариант )))
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"));

with-love-from-siberia 02.09.2010 14:13

Чтобы сразу, тут же на месте и без функции:

var n = 9;
var s = ('00' + n).slice(-2);

alert(s);

megapup 02.09.2010 19:16

всем спасибо, теперь есть из чего выбрать :yes:

NikitaP 05.11.2018 10:49

"qwe".padStart(4, "0");


Часовой пояс GMT +3, время: 06:46.