Javascript分裂成了这个词的一部分

javascript spilt to get part of the word

本文关键字:一部分 分裂 Javascript      更新时间:2023-09-26

我尝试使用javascript spilt从What#a_new%20day中获取部分单词:new

我试过这样写代码:

<script>
var word="What#a_new%20day";
var newword = word.split("%20", 1).split("_", 2);
alert(newword);
</script>

但导致:

Uncaught TypeError: Object What#a_new has no method 'split'

也许有更聪明的方法得到我需要的单词。有人能帮我吗?谢谢。

split返回一个数组,因此第二个split试图操作第一个CC_5返回的数组,而不是字符串,这会导致TypeError。您还需要在第二次调用split之后添加正确的索引,否则newword也将是一个数组,而不是您期望的String。改为:

var newword = word.split("%20", 1)[0].split("_", 2)[1];

分割word,然后分割结果数组索引0处的字符串,并将新数组索引1处的字符串的值赋给newword

正则表达式

var word="What#a_new%20day";
var newword = word.match(/_(.+)%/)[1];
alert(newword);

返回regex (_(.+)%)中的第一个捕获组([1]),即_后面跟着任意字符(.)一次或多次(+)后面跟着%

拆分的结果是一个数组,而不是字符串。所以你需要做的是

<script>
var word="What#a_new%20day";
var newword = word.split("%20", 1)[0].split("_", 2);
alert(newword);
</script>

注意[0]

split返回一个数组:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

词。分割(" % 20 ",1);

给出一个数组,所以你不能这样做:

(上面的结果)。分割(" _ ",2);

如果分割是你想要的,那就去做吧,但从性能角度来看,这样做会更好:

var word="What#a_new%20day";
var newword = word.substr(word.indexOf('new'),3)
alert(newword);

实例:http://jsfiddle.net/qJ8wM/

Split搜索文本中%20的所有实例,而indexOf查找第一个实例,并且substr在性能方面也相当便宜。

JsPerf对分割与子字符串的统计(一般情况):http://jsperf.com/split-vs-substring