【问题标题】:Dynamically add spaces between concatenated strings在连接的字符串之间动态添加空格
【发布时间】:2020-02-05 07:59:32
【问题描述】:

我想知道是否可以在两个连接的字符串或整数之间动态添加空格。例如,这里只是连接一个字符串和一个整数:

var name = "Bruce"
var age = 14
name + " " + age
=> 'Bruce 14'

我希望姓名和年龄之间的空格是动态的。 例如:

var name = "Bruce"
var age = 14
var numberOfSpaces = something
name + 4 spaces + age
=> 'Bruce    14'

其中一个用例是在 dc.js 中绘制条形图,我可以将名称放在底部,将值放在条形顶部。但这无关紧要。我只是好奇是否有方法。

【问题讨论】:

  • 类似[name, age, "thing"].join(" ") 的东西?不过,这并不完全是 cleaner
  • Repeat Character N Times 的可能重复项

标签: javascript concatenation


【解决方案1】:

有一个proposed repeat() method,但几乎没有实现。

同时,你可以自己写:

function repeatstr(ch, n) {
  var result = "";

  while (n-- > 0)
    result += ch;

  return result;
}

var name = "Bruce"
var age = 14
var numberOfSpaces = 4

var fullName = name + repeatstr(" ", numberOfSpaces) + age;

【讨论】:

    【解决方案2】:

    您可以创建自己的函数来执行此操作:

    function spaces(x) {
        var res = '';
        while(x--) res += ' ';
        return res;
    }
    
    var name = "Bruce";
    var age = 14;
    name + spaces(4) + age;
    
    > "Bruce    14"
    

    我认为这是最漂亮和最简单的方法。

    【讨论】:

      【解决方案3】:
      var s = function(n) {return new Array(n + 1).join(",").replace(/,/g," ")};
      var name = "Bruce";
      var age = 14;
      var numberOfSpaces = 4;
      name + s(numberOfSpaces) + age;
      

      【讨论】:

        【解决方案4】:

        更新! String.prototype.repeat() 已经被所有主流浏览器支持了很长一段时间了。

        你可以这样做:

        var name = "Bruce";
        var age = 14;
        name + ' '.repeat(4) + age;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-26
          • 2020-06-03
          • 2012-06-24
          相关资源
          最近更新 更多