我将字符串"/"
和"/something"
与.split("/")
分开,我想获得长度,但它是相同的:2。我该如何分辨?理想的是"/".length == 0
和"./something" == 1
有什么建议吗?
如果字符串必须有一个/来注册1
var countThem = function countThem0(str, sep) {
return str.indexOf(sep) < 0 ? 0 : str.split(sep).filter(function (e) {
return e.length;
}).length;
};
否则var countThem = function countThem(str, sep) {
return str.split(sep).filter(function (e) {
return e.length;
}).length;
};
在ES2015中,它更整洁了
let countThem = (str, sep) => str.indexOf(sep) < 0 ? 0 : str.split(sep).filter(e => e.length).length;
或
let countThem = (str, sep) => str.split(sep).filter(e => e.length).length;
由于空字符串为假,您可以使用!""
来决定是否计算该字符串:
function myFunc(str){
var parts = str.split('/'),
i = 0;
while(i<parts.length){
// if the current String is empty, remove it from the array
if(!parts[i]) parts.splice(i, 1);
else i++;
}
return parts.length;
}
console.log( myFunc('zero') ); // 0
console.log( myFunc('/') ); // 0
console.log( myFunc('/one') ); // 1
console.log( myFunc('one/two') ); // 2
console.log( myFunc('1/2/3///') );// 3
您也可以使用filter
来…过滤那些元素:
function myFunc(str){
return str.split('/').filter(function(part){return !!part}).length;
}
console.log( myFunc('zero') ); // 0
console.log( myFunc('/') ); // 0
console.log( myFunc('/one') ); // 1
console.log( myFunc('one/two') ); // 2
console.log( myFunc('1/2/3///') );// 3
你可以这样做。
var str = "/";
str.split('/').join('') // always "" which equal false if there is only '/'
var str1 = "/somthing";
str1.split('/').join('') // always non-empty if string not contain only '/' character