如何获得不同长度的拆分字符串"/"和"/something"



我将字符串"/""/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

相关内容

  • 没有找到相关文章