在javascript中的字符串中计算变量子字符串

时间:2019-12-20 14:24:59

标签: javascript jquery

我在javascript中有这样的字符串:

var stringa = 'CONCATENATE("custom text 1", CHAR(10), "text", CHAR(10), "other text", CHAR(10), "another one", CHAR(10), "funny last string")';

我的目标是计算字符串内的子字符串,用,分割,不包括CHAR(10)。不变的规则是:我需要计数的子字符串在" "内部,因此在我的示例中有5个子字符串。

如何仅使用javascript或jquery做到这一点?

我已经找到了解决方案,但我认为还有一种更优雅的方法:

var total = stringa.match(/\"/g) || []).length / 2;

3 个答案:

答案 0 :(得分:1)

您可以分割"以获得返回数组的长度-1并除以2 ...

var stringa = 'CONCATENATE("custom text 1", CHAR(10), "text", CHAR(10), "other text", CHAR(10), "another one", CHAR(10), "funny last string")';

var temp = stringa.split('"');
var count = (temp.length - 1) / 2;
window.alert(count);

答案 1 :(得分:1)

您可以使用RegExp

var stringa = 'CONCATENATE("custom text 1", CHAR(10), "text", CHAR(10), "other text", CHAR(10), "another one", CHAR(10), "funny last string")';

var matches = stringa.match(/"([^"]+)"/g) || [];
console.log(matches);
var count = matches.length;
console.log(count);

答案 2 :(得分:0)

您可以找到所有出现的双引号,然后将其除以2。这就是您的单词数。

  const stringa = 'CONCATENATE("custom text 1", CHAR(10), "text", CHAR(10), "other text", CHAR(10), "another one", CHAR(10), "funny last string")';
  const countDoubleQuotes = [...stringa].reduce((count, current) => current === '"' ? count + 1 : count, 0);
  const numberOfSubstrings = countDoubleQuotes / 2;

  console.log(numberOfSubstrings)