381 votes

L'équivalent Javascript de PHP Explode()

J'ai cette corde :

0000000020C90037:TEMP:data

J'ai besoin de cette corde :

TEMP:données.

Avec PHP, je ferais ceci :

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

Comment puis-je efficacement explode une chaîne en JavaScript de la même manière qu'en PHP ?

639voto

John Hartsock Points 36565

Il s'agit d'une conversion directe de 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'

77 votes

Il faut noter que le tableau commence à [0].

55 votes

Monsieur Kaleun... C'est compris... Mais OP voulait les deux derniers éléments du tableau.

4 votes

+1 : C'est exact ; voici un lien de MDN : developer.mozilla.org/fr/JavaScript/Référence/Global_Objects/ . Et dans le sens "inverse", donc l'équivalent de PHP implode() est myArray.join(':') : developer.mozilla.org/fr/JavaScript/Référence/Global_Objects/

51voto

psycho brm Points 2298
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']

10 votes

Félicitations pour avoir été le UNIQUEMENT un, pour autant que je puisse voir, pour fournir un ACTUEL équivalent à la fonctionnalité explode de PHP (comme dans la question initiale).

2 votes

Quelle solution simple et élégante, j'aimerais que ce soit la réponse acceptée.

47voto

Felix Kling Points 247451

Vous n'avez pas besoin de vous séparer. Vous pouvez utiliser indexOf y substr :

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

Mais l'équivalent de explode serait split .

7 votes

Quelqu'un a probablement pensé que tu étais sarcastique. Parfois, il faut tout expliquer. Par exemple, "Votre problème est mieux résolu par 'indexOf' ... mais 'split' répond littéralement à votre question."

1 votes

Downvoter : "Comment oser vous proposez une solution plus simple et plus performante au lieu de valider mes idées préconçues ?"

32voto

Quentin Points 325526

On dirait que vous voulez divisé

6voto

German Rumm Points 3436

Utiliser String.split

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X