获取具有特定特殊字符的单词作为其最后一个字母

时间:2012-12-06 09:35:10

标签: javascript-events javascript javascript-framework

我的代码:

我尝试了以下代码

var str = "Have fun storming the castle!"
var character = "!";

function endsWith(str, character) {
    return str.indexOf(character, str.length - character.length) !== -1;
}

alert(endsWith(str, character));

结果为True,因为句子中存在这样的词。

但我需要结果为castle!,因为它是唯一具有此类字符的单词。如果还有多个具有此类特征的单词,我需要这些单词。

3 个答案:

答案 0 :(得分:2)

下面的函数接受字符串和字符,并返回一个以字符作为最后一个字符的单词数组。它区分大小写但如果您想使其不区分大小写,则只需将.toLowerCase()添加到比较行。

function getWords(str, character)
{
    var words = str.split(" ");
    var result = [];

    for(var i=0; i<words.length; i++)
    {
        if(words[i].slice(-1) == character)
        {
            result.push(words[i]);
        }
    }

    return result;
}

var str = "Have fun storming the castle!";
var character = "!";

console.log( getWords(str, character) );

输出

  

[&#34;!城堡&#34;]

多字测试:

console.log( getWords("Have fun storming! the castle!", "!") );

输出

  

[&#34; storming!&#34;,&#34; castle!&#34;]

<强> jsFiddle Demo

答案 1 :(得分:1)

var str = "Have fun storming! the castle!"
var character = "!";

function getWords(str, character)
{
     var words = str.split(" ");
     var result = [];

     for(var i in words)
     {
         //if(words[i].search(character)!="-1")
         if(words[i].substring(words[i].length-1)==character)
         {
             result.push(words[i]);
         }
     }

     return result;
}

alert(getWords(str, character));

如果字符串是“玩得开心冲进城堡!”。然后它返回

城堡!

如果字符串是“有趣的风暴!城堡!”。然后它返回

猛攻!,城堡!

答案 2 :(得分:0)

您想要使用正则表达式。如果您将其定义为“全局”,它将为您提供列表中的所有匹配项:

function endsWith (str, character) {
    regexp = new RegExp ('\\b.*?' + character + '\\b', 'g');
    return str.match (regexp);
}

然而,为了使它真的很好,你应该确保角色被转义,这样它就不会搞乱你的正则表达式:

function escape (character) {
    int num = character.charCodeAt (0);
    String code = '000' + num.toString (16);
    return '\\u' + code.substring (code.length - 4);
}

function endsWith (str, character) {
    regexp = new RegExp ('\\b.*?' + escape (character) + '\\b', 'g');
    return str.match (regexp);
}