我想计算字符串末尾字符串出现次数。我希望它忽略不在最后的事件,如果没有,我希望它返回零。
要查找的终端字符串:" -1"
e.g. string = 1
// 0
e.g. string = 1-1
// 1
e.g. string = 1-1-1
// 2
e.g. string = 1-2-1
// 1
e.g. string = 1-2-1-2-1
// 1
e.g. string = 2-1-1-1-1
// 4
e.g. string = 1-1-2
// 0
我希望它计算字符串末尾的所有匹配项,而不仅仅是字符串中任何位置的匹配项。
我试过了:
var occurrences = string.match(/(-1)*$/).length;
我在这里有一个JS小提琴:JS Fiddle
它返回" 2",无论我的字符串是什么。
答案 0 :(得分:2)
您需要处理返回数组的第一个元素:
string.match(/(-1)*$/)[0].length/2
找到第一个元素的长度,该元素的末尾是"-1"
的匹配字符串,除以2,因为字符串"-1"
的长度为2
。
引用MDN String.prototype.match():
返回值
如果字符串与表达式匹配,它将返回一个数组 包含整个匹配的字符串作为第一个元素,后跟 括号中捕获的任何结果。如果没有匹配,则为null 返回。
function count() {
console.log(string.match(/(-1)*$/)[0].length / 2)
}
var string = "1"
// 0
count();
string = "1-1"
// 1
count();
string = "1-1-1"
// 2
count();
string = "1-2-1"
// 1
count();
string = "1-2-1-2-1"
// 1
count();
string = "2-1-1-1-1"
// 4
count();
string = "1-1-2"
// 0
count();
答案 1 :(得分:1)
向后走,数数?
var string = "2-1-1-1-1";
var find = "-1";
var match = 0;
for (var i = string.length; i >= 0; i -= find.length) {
if (string.substr(i - find.length, find.length) == find)
match++;
else
break;
}
console.log("="+match)

答案 2 :(得分:1)
使用String#match查找到达结尾的-1
链,然后按-1
拆分,得到长度-1。当您分割一串-1-1-1
时,您将获得一个包含四个项目的数组。现在我们可以提取长度,并将其减少一个。
function m(str) {
return str.match(/(-1)*$/g)[0].split(-1).length - 1;
}
console.log(m('1')) // 0
console.log(m('1-1')) // 1
console.log(m('1-1-1')) // 2
console.log(m('1-2-1')) // 1
console.log(m('1-2-1-2-1')) // 1
console.log(m('2-1-1-1-1')) // 4
console.log(m('1-1-2')) // 0

答案 3 :(得分:0)
非正则表达版:
plt.xticks(ha='left')
答案 4 :(得分:0)
试试这个。这对所有测试值都运行正常
function countOnesAtTheEnd(s){
var array = s.split("-");
var count = 0;
for(var i =1; i<array.length; i++)
{
if(array[i] =="1"){
count++;
}
else count = 0;
}
console.log(count);
}
countOnesAtTheEnd("1");
countOnesAtTheEnd("1-1");
countOnesAtTheEnd("1-1-1");
countOnesAtTheEnd("1-2-1");
countOnesAtTheEnd("1-2-1-2-1");
countOnesAtTheEnd("2-1-1-1-1");
countOnesAtTheEnd("1-1-2");
&#13;