web-dev-qa-db-fra.com

Javascript équivalent à PHP Explode ()

J'ai une chaîne qui ressemble à ceci:

0000000020C90037: TEMP: données

Et je dois tout récupérer après le premier colon, pour avoir TEMP: data.

Je ne travaille pas souvent en Javascript, s'il s'agissait de PHP, je ferais ceci:

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

Ceci est une conversion directe depuis votre code 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'
586
John Hartsock

Vous n'avez pas besoin de diviser. Vous pouvez utiliser indexOf et substr :

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

Mais l'équivalent de explode serait split .

44
Felix Kling
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;
};

Devrait imiter exactement la fonction explode () de PHP.

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

On dirait que tu veux split

27
Quentin

Essaye ça:

arr = str.split (":");
7
weltraumpirat

crée un objet:

// 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";
5
JM Design

Utiliser String.split

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

4
German Rumm

Si vous aimez php, jetez un oeil à php.JS - JavaScript explode

Ou dans la fonctionnalité JavaScript normale: `

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

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

sorties: TEMP:data

  • .split () démontera une chaîne en plusieurs parties
  • .join () réassemble le tableau en une chaîne
  • quand vous voulez le tableau sans son premier élément, utilisez .slice (1)
3
exebook

Sans intention de critiquer John Hartsock , juste au cas où le nombre de délimiteurs varierait pour quiconque utilisant le code donné, je suggérerais formellement de l'utiliser à la place ...

var mystr = '0000000020C90037:TEMP:data';
var myarr = mystr.split(":");
var arrlen = myarr.length;
var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1];
2
dylan maxey
var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"
1
Ruben Kazumov

Juste un petit ajout à la réponse de psycho brm (sa version ne fonctionne pas dans IE <= 8). Ce code est compatible avec tous les navigateurs:

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;
}
1
Efi Nuhr

Je sais donc que cet article est assez ancien, mais j’ai pensé que je pourrais aussi bien ajouter une fonction qui m’a aidé au fil des ans. Pourquoi ne pas simplement refaire la fonction d’explosion en utilisant split comme mentionné ci-dessus? Eh bien la voici:

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

Cette fonction fonctionne bien si vous essayez d’obtenir les valeurs entre deux valeurs. Par exemple:

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

Si vous souhaitez obtenir les informations entre les deux "balises" [valeurs], vous pouvez utiliser la fonction comme suit.

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

Mais disons que vous n'avez pas ces "balises" pratiques comme dans l'exemple ci-dessus affichées. Peu importe.

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

Wana le voir en action? Cliquez ici .

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

la variable éclatée renverra un tableau et vous pourrez accéder aux éléments du tableau y accédant vrai éclaté [nième] où nième est l'indice de la valeur que vous voulez obtenir

0

Si vous voulez définir votre propre fonction, essayez ceci:

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
}

Extrait de: http://locutus.io/php/strings/explode/

0
harish sharma

essayez comme ça,

ans = str.split (":");

Et vous pouvez utiliser deux parties de la chaîne comme,

ans [0] et ans [1]

0
meignanamoorthy ks

J'ai utilisé slice, split et join Vous pouvez écrire une seule ligne de code

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