javascript拆分以获得该单词的一部分

时间:2011-09-07 14:30:18

标签: javascript

我尝试使用javascript溢出来获取new

中的部分内容:What#a_new%20day

我尝试了这样的代码:

<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'

也许有更明智的方法来获得我需要的词。所以有人可以帮助我吗?感谢。

5 个答案:

答案 0 :(得分:5)

split返回一个数组,因此第二个split正在尝试对第一个返回的数组进行操作,而不是一个字符串,这会导致TypeError。您还需要在第二次调用split后添加正确的索引,或者newword也是一个数组,而不是您期望的字符串。将其更改为:

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

这会拆分word,然后在结果数组的索引0处拆分字符串,并将新数组的索引1处的字符串值分配给newword

答案 1 :(得分:2)

正规救援

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

这将返回正则表达式[1])中的第一个((...))捕获的组(_(.+)%),其中_后跟任何字符(. )一次或多次(+)后跟%

答案 2 :(得分:1)

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

word.split(“%20”,1);

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

(上面的结果).split(“_”,2);

答案 3 :(得分:1)

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

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

注意 [0]

答案 4 :(得分:1)

如果拆分是您的追求,那就去做吧,但是表现明智,做这样的事情会更好:

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

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

拆分搜索文本中%20的所有实例,而indexOf查找第一个实例,而substr也是相当便宜的性能。

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