计算字符串中的特定字符

时间:2014-04-30 10:05:16

标签: javascript

我有一个字符串

file123,file456,file789

我想计算一下时间","在这个字符串中 例如,对于这个字符串,答案应为2

6 个答案:

答案 0 :(得分:3)

简单的正则表达式将为您提供长度:

var str = "file123,file456,file789";
var count = str.match(/,/g).length;

答案 1 :(得分:2)

如果你正在处理一个大字符串,你可以使用RegExp.exec()来保持记忆力下降:

var re = /,/g,
str = 'file123,file456,file789',
count = 0;

while (re.exec(str)) {
    ++count;
}

console.log(count);

Demo - benchmark comparison

性能比使用String.match()的解决方案低20%左右但如果您关注内存则会有所帮助。

更新

不那么性感,但速度更快:

var count = 0,
pos = -1;

while ((pos = str.indexOf(',', pos + 1)) != -1) {
  ++count;
}

Demo

答案 2 :(得分:2)

有很多方法可以做到这一点,但这里有一些例子:)

1

"123,123,123".split(",").length-1

2

("123,123,123".match(/,/g)||[]).length

答案 3 :(得分:1)

根据您想要的项目拆分字符串然后获取结果数组的长度可能会更快。

var haystack = 'file123,file456,file789';
var needle = ',';
var count = haystack.split(needle).length - 1;

答案 4 :(得分:1)

由于split必须创建另一个数组,我建议编写一个像这样的辅助函数

function count(originalString, character) {
    var result = 0, i;
    for (i = 0; i < originalString.length; i += 1) {
        if (character == originalString.charAt(i)) {
            result +=1;
        }
    }
    return result;
}

答案 5 :(得分:0)

var count = "file123,file456,file789".split(",").length - 1;
相关问题