当前位置: 首页 > 面试题库 >

相当于python的.format()的Javascript

欧阳山
2023-03-14
问题内容

我想要一个模仿python .format()函数的javascript函数,其功能类似于

.format(*args, **kwargs)

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

相当于printf /
string.format的JavaScript

我想能够做

"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", "bob","jill",a="mary")
==> hello you and bob and mary and jill

我意识到这是一个艰巨的任务,但是也许在某个地方有一个完整的(或至少是部分的)解决方案,其中也包含关键字参数。

哦,我听说AJAX和JQuery可能有用于此的方法,但是我希望能够做到而没有那么多开销。

特别是,我希望能够将其与Google文档的脚本一起使用。

谢谢


问题答案:

更新:如果您使用的是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", "bob", {a:"mary"})

  )

  .append(

    "hello {0} and {1} and {a} and {2}<br />".format("you", "bob", "jill", {a:"mary"})

  );


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="tests"></div>


 类似资料:
  • 问题内容: 我知道(其中e是一个异常)会打印发生的异常,但是,我试图找到与Java等效的python,它可以将异常确切地跟踪到发生的那一行,并打印出整个轨迹。 谁能告诉我Python 的等效功能吗? 问题答案: 在块内执行此操作时,它将自动使用当前异常。有关更多信息,请参见http://docs.python.org/library/traceback.html。

  • 问题内容: 在Python中,您可以使用内置函数和来获得当前范围内所有局部和全局变量的字典。是否有某种等效的方式在Javascript中执行此操作?例如,我想执行以下操作: 这是完全可能的,还是我应该只使用本地对象进行查找? 问题答案: locals()-否。 globals()-是的。 是对全局范围的引用,例如在python中。 是相同的:

  • 问题内容: 我在php中将以下语句转换为。 我需要在另一个程序中做同样的事情吗? 有任何想法吗 ? 干杯, 问题答案: 该模块具有,它可以满足您的需求。

  • 问题内容: 我正在自学python 2.7。我在使用具有GOTO语句的BATCH方面有一些经验。我该如何在python中做到这一点?例如,假设我想从第5行跳到第18行。 我意识到以前有关于此主题的问题,但是我发现它们没有足够的信息,或者对于我目前的理解而言,在python中的水平太高了。 问题答案: s在计算机科学和编程中普遍受到指责,因为它们会导致非常非结构化的代码。 Python(像当今几乎所

  • 问题内容: 是否有Python类或模块实现类似于BitSet的结构? 问题答案: 标准库中没有任何内容。尝试: http://pypi.python.org/pypi/bitarray

  • 问题内容: 这是执行字符串替换的两种方法: 如何使用Java做与第一种方法类似的操作? 问题答案: 或更短: