我有这个字符串:
0000000020C90037:TEMP:data
我需要这个字符串:
TEMP:data.
使用PHP,我会这样做:
$str = '0000000020C90037:TEMP:data';
$arr = explode(':', $str);
$var = $arr[1].':'.$arr[2];
我怎么在JavaScript中有效地实现像PHP中explode
函数的功能?
我有这个字符串:
0000000020C90037:TEMP:data
我需要这个字符串:
TEMP:data.
使用PHP,我会这样做:
$str = '0000000020C90037:TEMP:data';
$arr = explode(':', $str);
$var = $arr[1].':'.$arr[2];
我怎么在JavaScript中有效地实现像PHP中explode
函数的功能?
对于psycho brm的回答,只有一个小改动(他的版本在IE8及以下版本不起作用)。 这段代码是跨浏览器兼容的:
function explode (s, separator, limit)
{
var arr = s.split(separator);
if (limit) {
arr.push(arr.splice(limit-1, (arr.length-(limit-1))).join(separator));
}
return arr;
}
var str = '0000000020C90037:TEMP:data'; // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, ""); // str = "TEMP:data"
我使用了slice、split和join函数。你只需要写一行代码。
let arrys = (str.split(":").slice(1)).join(":");
我知道这篇文章已经很老了,但我想我可以添加一个多年来帮助过我的函数。为什么不使用上面提到的split重新制作explode函数呢?好吧,这就是它:
function explode(str,begin,end)
{
t=str.split(begin);
t=t[1].split(end);
return t[0];
}
如果你想获取两个值之间的数值,那么这个函数会很好用。例如:
data='[value]insertdataherethatyouwanttoget[/value]';
out=explode(data,'[value]','[/value]');
//Variable out would display the string: insertdataherethatyouwanttoget
但是假设您没有像上面示例中显示的那些方便的“标签”。没关系。
out=explode(data,'insert','wanttoget');
//Now out would display the string: dataherethatyou
想看它的效果吗?点击这里。
function explode (delimiter, string, limit) {
if (arguments.length < 2 ||
typeof delimiter === 'undefined' ||
typeof string === 'undefined') {
return null
}
if (delimiter === '' ||
delimiter === false ||
delimiter === null) {
return false
}
if (typeof delimiter === 'function' ||
typeof delimiter === 'object' ||
typeof string === 'function' ||
typeof string === 'object') {
return {
0: ''
}
}
if (delimiter === true) {
delimiter = '1'
}
// Here we go...
delimiter += ''
string += ''
var s = string.split(delimiter)
if (typeof limit === 'undefined') return s
// Support for limit
if (limit === 0) limit = 1
// Positive limit
if (limit > 0) {
if (limit >= s.length) {
return s
}
return s
.slice(0, limit - 1)
.concat([s.slice(limit - 1)
.join(delimiter)
])
}
// Negative limit
if (-limit >= s.length) {
return []
}
s.splice(s.length + limit)
return s
}
试试这样写:
ans = str.split (":");
你可以像这样使用字符串的两部分,
ans[0] 和 ans[1]
var str = "helloword~this~is~me";
var exploded = str.splice(~);
使用explode函数后,将返回一个数组,您可以通过访问exploded[nth]来访问数组的元素,其中nth是要获取的值的索引。
~
(这会导致语法错误)。并且splice不是为此目的而设计的,它是用来从数组中获取/取出项目或添加到数组中的。 - CPHPython