如何在JavaScript中从数组中的每个字符串中选择倒数第二个单词
How do I select the second last word from each string in an array in JavaScript?
假设我有一个字符串列表,如:
foo = ["asdfas ad sfa", "asdfa dfas fasd", "adf adfasd sdfasf adfdf"];
现在我想要一个映射,将这个数组映射到每个字符串的倒数第二个单词的列表中:
bar = ["ad", "dfas", "sdfasf"];
我知道我可以通过使用正则表达式/('w+)'s'w+$/
找到它们,但我如何使用找到的结果来执行映射?
我想使用类似的正则表达式替换
bar = foo.map(function(d){return d.replace(/^.*'s('w+)'s'w+$/,"$1")});
更新:阅读下面的评论后,我认为这个可能更好:
bar = foo.map(function(d){return d.match(/('w+)'s'w+$/)[1]});
当没有倒数第二句话时,它会抛出错误,这满足了我的需求。当然,如果你想让它在没有找到倒数第二个单词时保持字符串不变,那么试试这个:
bar = foo.map(function(d){return d.replace(/.*?('w+)'s'w+$/,"$1")});
没错,map就是您需要的
foo = ["asdfas ad sfa", "asdfa dfas", "adf adfasd sdfasf adfdf"];
foo.map(function(str) {
var words = str.split(" "), total = words.length;
if (total>2) this.push(words[total-2]);;
}, bar=[]);
alert(bar);
忘记演示再次
新的演示EDIT:正如@jcsanyi提到的,当字符串包含的单词少于3个时,我以前的代码返回了空元素,所以我找到了一个解决方案,并再次修改了它
foo仍然是全局的(它不是一个bug),第二个元素现在只有两个字来检查
非常新的演示
试试这个。我使用了JavaScript 1.8阵列reduce
方法
[
"asdfas ad sfa",
"asdfa dfas fasd",
"adf adfasd sdfasf adfdf"
].reduce( function ( m , r ){
var splitted = r.split(/'W+/g);
if ( splitted.length > 1 ){
m.push( splitted[splitted.length-2] );
}
return m;
},[]);
试试这个:
bar = foo.map(function(el){
return el.match(/^.*?('w+)'s'w+$/)[1];
});
或使用jquery
bar = $.map(foo, function(el, i){
return el.match(/^.*?('w+)'s'w+$/)[1];
});
试试这个。从字符串中获取倒数第二个字符。。
var str = "HELLO WORLD"; var n = str.charAt(str.length-2); Result is: D
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 本地存储中的字符串到字节数组转换
- JavaScript按钮/输入/函数,字符串反转
- 从查询字符串参数推断出正确的数据类型
- 使用 jQuery 从字符串中获取倒数第二个字符的位置
- 如何在JavaScript中从数组中的每个字符串中选择倒数第二个单词