Javascript等价于PHP爆炸()

我有这个字符串:

0000000020 c90037:临时数据

我需要这个字符串:

临时:数据。

用PHP我可以这样做:

$str = '0000000020C90037:TEMP:data';
$arr = explode(':', $str);
$var = $arr[1].':'.$arr[2];

我如何有效地explode在JavaScript字符串的方式,它在PHP工作?

406591 次浏览

看起来你想要分裂

使用String.split

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

你不需要分开。你可以使用indexOfsubstr:

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

但与explode等价的是split

试试这个:

arr = str.split (":");

如果你喜欢php,可以看看php.JS - JavaScript爆炸

或在正常的JavaScript功能: ' < / p >

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

这是从你的PHP代码直接转换:

//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
//Since we skipped the first element in the array, we start at 1
var myvar = myarr[1] + ":" + myarr[2];


// Show the resulting value
console.log(myvar);
// 'TEMP:data'

创建一个对象:

// 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";

无意批判约翰哈索克,只是以防任何使用给定代码的人分隔符的数量可能会有所不同,我正式建议使用这个…

var mystr = '0000000020C90037:TEMP:data';
var myarr = mystr.split(":");
var arrlen = myarr.length;
var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1];
String.prototype.explode = function (separator, limit)
{
const array = this.split(separator);
if (limit !== undefined && array.length >= limit)
{
array.push(array.splice(limit - 1).join(separator));
}
return array;
};

应该完全模仿PHP的爆炸()函数。

'a'.explode('.', 2); // ['a']
'a.b'.explode('.', 2); // ['a', 'b']
'a.b.c'.explode('.', 2); // ['a', 'b.c']

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

输出:TEMP:data

  • .split()将把字符串分解成多个部分
  • .join()将数组重新组装为字符串
  • 当你想要数组没有第一项时,使用.slice(1)

所以我知道这篇文章很老了,但我想我不妨添加一个多年来帮助我的功能。为什么不像上面提到的那样使用split重做爆炸函数呢?就是这样:

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

想看看实际情况吗?单击在这里

var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"
只是对心理brm的答案的一点补充(他的版本在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 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
}

取自:http://locutus.io/php/strings/explode/

var str = "helloword~this~is~me";
var exploded = str.splice(~);

爆炸变量将返回数组,你可以访问数组中的元素,访问它true explosive [nth],其中nth是你想要得到的值的下标

像这样试试,

ans = str.split (":");

你可以用弦的两部分,

Ans[0]和Ans [1]

我使用切片,分割和连接 你可以只写一行代码

      let arrys = (str.split(":").slice(1)).join(":");