cortar - Javascript equivalente a PHP Explode()
split javascript ejemplo (16)
Tengo una cadena que se parece a esto:
0000000020C90037: TEMP: datos
Y necesito agarrar todo después del primer colon, para que tenga TEMP: data.
No trabajo a menudo en Javascript, si fuera PHP haría esto:
$str = ''0000000020C90037:TEMP:data'';
$arr = explode(":", $str);
$var = $arr[1].":".$arr[2];
Entonces, sé que esta publicación es bastante antigua, pero pensé que también podría agregar una función que me haya ayudado a lo largo de los años. ¿Por qué no simplemente rehacer la función explotar usando split como se mencionó anteriormente? Pues aquí está:
function explode(str,begin,end)
{
t=str.split(begin);
t=t[1].split(end);
return t[0];
}
Esta función funciona bien si está intentando obtener los valores entre dos valores. Por ejemplo:
data=''[value]insertdataherethatyouwanttoget[/value]'';
Si estaba interesado en obtener la información entre las dos "etiquetas" de [valores], podría usar la función como la siguiente.
out=explode(data,''[value]'',''[/value]'');
//Variable out would display the string: insertdataherethatyouwanttoget
Pero digamos que no tiene esas "etiquetas" útiles como el ejemplo anterior mostrado. No importa.
out=explode(data,''insert'',''wanttoget'');
//Now out would display the string: dataherethatyou
¿Wana lo ve en acción? Haga click here
Esta es una conversión directa de su código 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''
No necesitas dividirte. Puedes usar indexOf
y substr
:
str = str.substr(str.indexOf('':'')+1);
Pero el equivalente a explode
estaría developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… .
Parece que quieres developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
Prueba esto:
arr = str.split (":");
Si quieres definir tu propia función, prueba esto:
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
}
Si te gusta php, echa un vistazo a php.JS - JavaScript explode
O en la funcionalidad normal de JavaScript: `
var vInputString = "0000000020C90037:TEMP:data";
var vArray = vInputString.split(":");
var vRes = vArray[1] + ":" + vArray[2]; `
Sin ninguna intención de criticar a , en caso de que el número de delimitadores varíe para cualquiera que use el código dado, sugeriría formalmente que use este ...
var mystr = ''0000000020C90037:TEMP:data'';
var myarr = mystr.split(":");
var arrlen = myarr.length;
var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1];
Solo una pequeña adición a la respuesta de psycho brm (su versión no funciona en IE <= 8). Este código es compatible con todos los navegadores:
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;
}
Utilice String.split
"0000000020C90037:TEMP:data".split('':'')
prueba de esta manera,
ans = str.split (":");
Y puedes usar dos partes de la cadena como,
ans [0] y ans [1]
console.log((''0000000020C90037:TEMP:data'').split(":").slice(1).join('':''))
salidas: TEMP:data
- .split () desensamblará una cadena en partes
- .join () vuelve a ensamblar la matriz de nuevo a una cadena
- cuando desee la matriz sin su primer elemento, use .slice (1)
crear es un objeto:
// 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.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;
};
Debe imitar la función de explosión de PHP exactamente.
''a''.explode(''.'', 2); // [''a'']
''a.b''.explode(''.'', 2); // [''a'', ''b'']
''a.b.c''.explode(''.'', 2); // [''a'', ''b.c'']
var str = "helloword~this~is~me";
var exploded = str.splice(~);
la variable explosionada devolverá la matriz y usted puede acceder a los elementos de la matriz accediendo a la verdadera explosión [nth] donde nth es el índice del valor que desea obtener
var str = ''0000000020C90037:TEMP:data''; // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, ""); // str = "TEMP:data"