Javascript相当于python的.format()

前端之家收集整理的这篇文章主要介绍了Javascript相当于python的.format()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要一个模仿 python .format()函数javascript函数
.format(*args,**kwargs)

前一个问题为’.format(* args)提供了一个可能的(但不是完整的)解决方

JavaScript equivalent to printf/string.format

我希望能够做到

"hello {} and {}".format("you","bob"
==> hello you and bob

"hello {0} and {1}".format("you","bob")
==> hello you and bob

"hello {0} and {1} and {a}".format("you","bob",a="mary")
==> hello you and bob and mary

"hello {0} and {1} and {a} and {2}".format("you","jill",a="mary")
==> hello you and bob and mary and jill

我意识到这是一个很高的订单,但也许某个地方有一个包含关键字参数的完整(或至少部分)解决方案.

哦,我听说AJAX和JQuery可能有这方面的方法,但我希望能够在没有这些开销的情况下完成它.

特别是,我希望能够将其与google doc的脚本一起使用.

谢谢

解决方法

更新:如果您使用的是ES6,则模板字符串的工作方式与String.format: https://developers.google.com/web/updates/2015/01/ES6-Template-Strings非常相似

如果没有,下面的代码适用于上面的所有情况,其语法与python的String.format方法非常相似.以下测试用例.

String.prototype.format = function() {
  var args = arguments;
  this.unkeyed_index = 0;
  return this.replace(/\{(\w*)\}/g,function(match,key) { 
    if (key === '') {
      key = this.unkeyed_index;
      this.unkeyed_index++
    }
    if (key == +key) {
      return args[key] !== 'undefined'
      ? args[key]
      : match;
    } else {
      for (var i = 0; i < args.length; i++) {
        if (typeof args[i] === 'object' && typeof args[i][key] !== 'undefined') {
          return args[i][key];
        }
      }
      return match;
    }
  }.bind(this));
};

// Run some tests
$('#tests')
  .append(
    "hello {} and {}<br />".format("you","bob")
  )
  .append(
    "hello {0} and {1}<br />".format("you","bob")
  )
  .append(
    "hello {0} and {1} and {a}<br />".format("you",{a:"mary"})
  )
  .append(
    "hello {0} and {1} and {a} and {2}<br />".format("you",{a:"mary"})
  );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tests"></div>
原文链接:https://www.f2er.com/js/150945.html

猜你在找的JavaScript相关文章