Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Удлинить строку до необходимого значения (https://javascript.ru/forum/node-js-io-js/76684-udlinit-stroku-do-neobkhodimogo-znacheniya.html)

Антон789456 02.02.2019 21:14

Удлинить строку до необходимого значения
 
Здравствуйте, опять я маюсь с лабораторной. На этот раз задание такое:

Дана строка, в которой нет начальных и конечных пробелов. Необходимо изменить ее так, чтобы длина строки стала равна заданной длине, больше чем текущая длина строки. Это следует сделать путем вставки между словами дополнительных пробелов. Количество пробелов между от- дельными словами не должно отличаться более чем на один пробел (то есть пробелы добавляются равномерно) Можно считать, что изначально между словами по одному пробелу

Написав код, у меня цикл выполняется бесконечное количество раз и ничего не меняет. Помогите пожалуйста и, если не сложно, укажите, где у меня ошибка)
var str = 'Произвольная строка, которую надо удлиннить';//43 символа
var n = 46;
var i;
var str1;
do  {

  for(i=0; i<str.length; i++){


        if ((str[i] == ' ') && (str.length < n) && (str[i+1] != ' ')){

            str1 = str.substring(0, i+1) + ' ' + str.substring(i);
            
            str = str1;
            i++

    } else break;

  }  

} while (str.length<n);

console.log(str);

рони 02.02.2019 23:25

Антон789456,

var str = 'Произвольная строка, которую надо удлиннить';//43 символа
var n = 46;
var i = str.length - 1 ;
var up = true;


  for( ; n > str.length; i = (i - 1 + str.length)%str.length){

        if (str[i] == ' ' && up) {
           str = str.substring(0, i) + ' ' + str.substring(i);
           up = false;
        }
        else if (str[i]) up = true ;
  }

 console.log(str, str.length);

Vlasenko Fedor 03.02.2019 01:03

еще вариант :)
function extendString(str, len) {
    var diffStr = len - str.length;
    if (diffStr > 0) {
        var pr = str.match(/ /g).length;
        var intPr = Math.floor(diffStr / pr);
        var modPr = diffStr % pr;
        var newPr = ' ' + ' '.repeat(intPr);
        str = str.replace(/ /g, function () {
            return newPr + (modPr-- > 0 ? " " : "");
        });
    }
    return str;
}

var str = 'Произвольная строка, которую надо удлиннить';
var newStr1 = extendString(str, 46);
console.log(newStr1, newStr1.length);


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