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];
你不需要拆分。 你可以使用indexOf
和substr
:
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是您想要获取的值的索引