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];
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'
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']
On dirait que tu veux split
Essaye ça:
arr = str.split (":");
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";
Utiliser String.split
"0000000020C90037:TEMP:data".split(':')
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]; `
console.log(('0000000020C90037:TEMP:data').split(":").slice(1).join(':'))
sorties: TEMP:data
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];
var str = '0000000020C90037:TEMP:data'; // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, ""); // str = "TEMP:data"
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;
}
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 .
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
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/
essayez comme ça,
ans = str.split (":");
Et vous pouvez utiliser deux parties de la chaîne comme,
ans [0] et ans [1]
J'ai utilisé slice, split et join Vous pouvez écrire une seule ligne de code
let arrys = (str.split(":").slice(1)).join(":");