JavaScript等价于PHP爆炸()

我有一个string,看起来像这样:

0000000020C90037:TEMP:数据

我需要抓住第一个冒号后面的所有内容,这样我才有TEMP:data。

我不经常使用Javascript,如果它是PHP我会这样做:

$str = '0000000020C90037:TEMP:data'; $arr = explode(":", $str); $var = $arr[1].":".$arr[2]; 
 //Loading the variable var mystr = '0000000020C90037:TEMP:data'; //Splitting it with : as the separator var myarr = mystr.split(":"); //Then read the values from the array where 0 is the first var myvar = myarr[0] + ":" + myarr[1]; 

你不需要拆分。 你可以使用indexOfsubstr

 str = str.substr(str.indexOf(':')+1); 

但相当于explode将被split

看起来你想分裂

 String.prototype.explode = function(separator, limit) { var arr = this.split(separator); if (limit) arr.push( arr.splice(limit-1).join(separator) ); return arr; } 

尝试这个:

 arr = str.split (":"); 

创build一个对象:

 // create a data object to store the information below. var data = new Object(); // this could be a suffix of a url string. var string = "?id=5&first=John&last=Doe"; // this will now loop through the string and pull out key value pairs seperated // by the & character as a combined string, in addition it passes up the ? mark var pairs = string.substring(string.indexOf('?')+1).split('&'); for(var key in pairs) { var value = pairs[key].split("="); data[value[0]] = value[1]; } // creates this object var data = {"id":"5", "first":"John", "last":"Doe"}; // you can then access the data like this data.id = "5"; data.first = "John"; data.last = "Doe"; 

使用String.split

"0000000020C90037:TEMP:data".split(':')

如果你喜欢PHP,看看php.JS – JavaScript爆炸

或者在普通的JavaScriptfunction中:`

 var vInputString = "0000000020C90037:TEMP:data"; var vArray = vInputString.split(":"); var vRes = vArray[1] + ":" + vArray[2]; ` 

console.log(('0000000020C90037:TEMP:data').split(":").slice(1).join(':'))

输出: TEMP:data

  • .split()会将一个string反汇编成部分
  • .join()将数组重新组装回string
  • 当你想要没有它的第一个项目的数组,使用.slice(1)

不打算批评约翰Hartsock ,以防万一任何人使用给定的代码分隔符的数量,我会正式build议使用这个,而不是…

 var mystr = '0000000020C90037:TEMP:data'; var myarr = mystr.split(":"); var arrlen = myarr.length; var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1]; 

所以我知道这个post很老,但是我想我也可以添加一个帮助我多年的function。 为什么不重新使用上面提到的使用split的爆炸函数呢? 那么这里是:

 function explode(str,begin,end) { t=str.split(begin); t=t[1].split(end); return t[0]; } 

如果您试图获取两个值之间的值,此function运作良好。 例如:

 data='[value]insertdataherethatyouwanttoget[/value]'; 

如果您有兴趣从两个[值]“标签”中获取信息,则可以使用如下所示的function。

 out=explode(data,'[value]','[/value]'); //Variable out would display the string: insertdataherethatyouwanttoget 

但是让我们假设你没有像上面显示的例子一样的方便的“标签”。 不pipe。

 out=explode(data,'insert','wanttoget'); //Now out would display the string: dataherethatyou 

Wana看到它在行动? 点击这里 。

 var str = '0000000020C90037:TEMP:data'; // str = "0000000020C90037:TEMP:data" str = str.replace(/^[^:]+:/, ""); // str = "TEMP:data" 

只是一个除了心理的答案(他的版本不工作在IE <= 8)的一点点。 这段代码是跨浏览器兼容的:

 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; } 

如果你想定义你自己的function,试试这个:

 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 } 
 var str = "helloword~this~is~me"; var exploded = str.splice(~); 

分解variables将返回数组,您可以访问数组访问它的元素true exploded [nth]其中nth是您想要获取的值的索引