Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2010, 17:18
Аспирант
Отправить личное сообщение для megapup Посмотреть профиль Найти все сообщения от megapup
 
Регистрация: 23.03.2009
Сообщений: 41

добить строку нулями
существует какая нибудь функция чтобы добить строку нулями или др символами?
напр мне нужно чтобы в строке было всегда 4 символа
foo("qwe")=>"0qwe"
foo("r")=>"000r"
и т.д.
"Я нуб, нужен совет"
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2010, 17:29
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

while(str.length<4){
str='0'+str;
}
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2010, 17:53
Аспирант
Отправить личное сообщение для megapup Посмотреть профиль Найти все сообщения от megapup
 
Регистрация: 23.03.2009
Сообщений: 41

спасибо, потянет.
а без цикла можно как-нибудь? (?подключить регулярные выражения?)
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2010, 18:04
Кандидат Javascript-наук
Отправить личное сообщение для Suharik Посмотреть профиль Найти все сообщения от Suharik
 
Регистрация: 06.04.2010
Сообщений: 130

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

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

Последний раз редактировалось Suharik, 01.09.2010 в 18:07.
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2010, 18:14
Аспирант
Отправить личное сообщение для megapup Посмотреть профиль Найти все сообщения от megapup
 
Регистрация: 23.03.2009
Сообщений: 41

хорошая функция, но устрашающе гигантская
а так вобще спасибо, в хозяйстве пригодится
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2010, 19:09
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

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

alert([fill(3, '0'),fill(4, 'a'),fill(2, 'ololo')].join('\n'))
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2010, 03:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

ещё вариант )))
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"));
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2010, 14:13
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

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

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

alert(s);

Последний раз редактировалось with-love-from-siberia, 02.09.2010 в 14:15.
Ответить с цитированием
  #9 (permalink)  
Старый 02.09.2010, 19:16
Аспирант
Отправить личное сообщение для megapup Посмотреть профиль Найти все сообщения от megapup
 
Регистрация: 23.03.2009
Сообщений: 41

всем спасибо, теперь есть из чего выбрать
Ответить с цитированием
  #10 (permalink)  
Старый 05.11.2018, 10:49
Новичок на форуме
Отправить личное сообщение для NikitaP Посмотреть профиль Найти все сообщения от NikitaP
 
Регистрация: 05.11.2018
Сообщений: 1

"qwe".padStart(4, "0");
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
по ctrl+Enter перенос курсора на след. строку Crux Internet Explorer 5 09.08.2010 15:30
как подставлять ссылки в адресную строку FRIE AJAX и COMET 5 09.07.2010 16:55
считать в строку chippolino Общие вопросы Javascript 4 07.07.2010 16:35
конвертация сложного массива в строку и назад Leax Общие вопросы Javascript 2 01.04.2010 18:17
объединение элементом массива в одну строку vvsh Элементы интерфейса 2 17.10.2009 19:53