返回第一个元素而不是数组的空元素

时间:2014-01-25 14:58:27

标签: javascript regex

我有一个可以有单词和空格的字符串 我想返回字符串中的第一个单词。

我的方法是:

  • 对其应用.split(' ')以删除空格。
  • 执行.filter(function(el){ return (el != '') }
  • 使用[0]
  • 获取第一个元素

有更优化的方法吗?也许是正则表达式?

我的代码:

var string = "  foo  bar ";
function getFirst(str) {
    var separatedString = str.split(' ');
    separatedString = separatedString.filter(function (el) {
        return (el != '')
    })
    return separatedString[0];
}

Fiddle

3 个答案:

答案 0 :(得分:2)

可能最接近你的代码的等价物就是这一行:

var word1 = s.replace(/\s*(\S+).*/, '$1');

由于你是按空间分割所以这段代码只是从给定的输入中获取第一个非空格子字符串。

答案 1 :(得分:1)

你可以做到

var firstWord = string.match(/\S+/)[0];

答案 2 :(得分:1)

你可以使用trim拆分多个空格并在过滤器中使用string.length

function getFirst(str) {
    var separatedString = str.split(/\s+/).filter( function (el) {
           return el.length;
        });
    return separatedString[0];
}
getFirst(' foo-bar foo bar bar@foo  '); //=> 'foo-bar'