Javascript, эквивалентный PHP Explode ()

У меня есть строка, которая выглядит так:

0000000020C90037: TEMP: данные

И мне нужно захватить все после первой толстой кишки, так что у меня есть TEMP: данные.

Я не часто работаю в Javascript, если бы это был PHP, я бы сделал это:

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

 //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 var myvar = myarr[0] + ":" + myarr[1]; 

Вам не нужно делиться. Вы можете использовать indexOf и substr :

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

Но эквивалент explode будет split .

Похоже, вы хотите разделить

 String.prototype.explode = function(separator, limit) { var arr = this.split(separator); if (limit) arr.push( arr.splice(limit-1).join(separator) ); return arr; } 

Попробуй это:

 arr = str.split (":"); 

Создать объект:

 // 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.split

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

Если вам нравится php, взгляните на php.JS – JavaScript explode

Или в обычных функциях JavaScript: `

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

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

выходы: TEMP:data

  • .split () будет разбирать строку на части
  • .join () снова собирает массив в строку
  • если вам нужен массив без его первого элемента, используйте .slice (1)

Без намерений критиковать Джона Хартсока , на всякий случай количество разделителей может варьироваться для любого, кто использует данный код, я бы официально предложил использовать это вместо этого …

 var mystr = '0000000020C90037:TEMP:data'; var myarr = mystr.split(":"); var arrlen = myarr.length; var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1]; 

Поэтому я знаю, что этот пост довольно старый, но я решил, что могу добавить функцию, которая помогала мне на протяжении многих лет. Почему бы просто не переделать функцию взрыва с использованием split, как указано выше? Ну вот он:

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

Эта функция работает хорошо, если вы пытаетесь получить значения между двумя значениями. Например:

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

Если вы заинтересованы в получении информации между двумя тегами [values], вы можете использовать функцию, как показано ниже.

 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" 

Просто небольшое дополнение к ответу на пси-брм (его версия не работает в 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 } 
 var str = "helloword~this~is~me"; var exploded = str.splice(~); 

взорванная переменная будет возвращать массив, и вы можете получить доступ к элементам массива, чтобы получить доступ к нему true exploded [nth], где nth – это индекс значения, которое вы хотите получить