Create a string of variable length, filled with a repeated character

前端 未结 10 1115
刺人心
刺人心 2020-11-28 03:59

So, my question has been asked by someone else in it\'s Java form here: Java - Create a new String instance with specified length and filled with specific character. Best so

10条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-28 04:36

    For Evergreen browsers, this will build a staircase based on an incoming character and the number of stairs to build.
    function StairCase(character, input) {
        let i = 0;
        while (i < input) {
            const spaces = " ".repeat(input - (i+1));
            const hashes = character.repeat(i + 1);
            console.log(spaces + hashes);
            i++;
        }
    }
    
    //Implement
    //Refresh the console
    console.clear();
    StairCase("#",6);   
    

    You can also add a polyfill for Repeat for older browsers

        if (!String.prototype.repeat) {
          String.prototype.repeat = function(count) {
            'use strict';
            if (this == null) {
              throw new TypeError('can\'t convert ' + this + ' to object');
            }
            var str = '' + this;
            count = +count;
            if (count != count) {
              count = 0;
            }
            if (count < 0) {
              throw new RangeError('repeat count must be non-negative');
            }
            if (count == Infinity) {
              throw new RangeError('repeat count must be less than infinity');
            }
            count = Math.floor(count);
            if (str.length == 0 || count == 0) {
              return '';
            }
            // Ensuring count is a 31-bit integer allows us to heavily optimize the
            // main part. But anyway, most current (August 2014) browsers can't handle
            // strings 1 << 28 chars or longer, so:
            if (str.length * count >= 1 << 28) {
              throw new RangeError('repeat count must not overflow maximum string size');
            }
            var rpt = '';
            for (;;) {
              if ((count & 1) == 1) {
                rpt += str;
              }
              count >>>= 1;
              if (count == 0) {
                break;
              }
              str += str;
            }
            // Could we try:
            // return Array(count + 1).join(this);
            return rpt;
          }
        } 
    

提交回复
热议问题