我的代码:
我尝试了以下代码
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!
,因为它是唯一具有此类字符的单词。如果还有多个具有此类特征的单词,我需要这些单词。
答案 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);
}