0

私のコード:

次のコードを試しました

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!、それがついにそのような文字を持っている唯一の単語であるため、私は結果が必要です。そのような性格を持つ複数の単語もあるなら、私はそれらの単語が必要です。

4

3 に答える 3

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) );

出力

["城!"]

複数の単語のテスト:

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

出力

[「ストーミング!」、「キャッスル!」]

jsFiddleデモ

于 2012-12-06T09:44:51.037 に答える
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));

文字列が「お城を襲うのを楽しんでください!」の場合。それから

城に戻ります!

文字列が「ストーミングを楽しんでください!城!」の場合。それからそれは

嵐を返します!、城!

于 2012-12-06T10:16:11.740 に答える
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);
}
于 2012-12-06T09:59:42.453 に答える