Javascript Эквивалент PHP Explode()


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

0000000020C90037: ТЕМПЕРАТУРА:данные

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

.

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

$str = '0000000020C90037:TEMP:data';
$arr = explode(":", $str);
$var = $arr[1].":".$arr[2];
Author: John Hartsock, 2010-12-23

16 answers

//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];
 549
Author: John Hartsock, 2015-12-10 11:45:32

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

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

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

 43
Author: Felix Kling, 2010-12-22 22:42:31

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

 27
Author: Quentin, 2010-12-22 22:36:06
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;
};

Должен точно имитировать функцию PHP explode().

'a'.explode('.', 2); // ['a']
'a.b'.explode('.', 2); // ['a', 'b']
'a.b.c'.explode('.', 2); // ['a', 'b.c']
 26
Author: psycho brm, 2018-06-21 01:45:16

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

arr = str.split (":");
 7
Author: weltraumpirat, 2010-12-22 22:37:07

Создание - это объект :

// 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
Author: JM Design, 2011-01-12 23:54:29

Использовать строку.разделить

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

 4
Author: German Rumm, 2010-12-22 22:36:10

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

Или в обычной функциональности JavaScript: `

var vInputString = "0000000020C90037:TEMP:data";
var vArray = vInputString.split(":");
var vRes = vArray[1] + ":" + vArray[2]; `
 3
Author: sv88erik, 2010-12-22 23:19:04

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

Выходные данные: TEMP:data

  • .split() разберет строку на части
  • .join() собирает массив обратно в строку
  • если вам нужен массив без первого элемента, используйте .slice(1)
 2
Author: exebook, 2014-01-16 18:55:37

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

var mystr = '0000000020C90037:TEMP:data';
var myarr = mystr.split(":");
var arrlen = myarr.length;
var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1];
 2
Author: dylan maxey, 2017-05-23 12:10:31

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

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

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

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

Если бы вы были заинтересованы в получении информации из двух [значений] "тегов", вы могли бы использовать функцию, подобную следующий.

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

Но предположим, что у вас нет таких удобных "тегов", как в приведенном выше примере. Неважно.

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

Хотите увидеть это в действии? Нажмите здесь.

 0
Author: Ramity, 2015-01-05 23:49:25
var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"
 0
Author: Ruben Kazumov, 2015-01-13 05:20:37

Просто небольшое дополнение к ответу psycho brm (его версия не работает в IE

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;
}
 0
Author: Efi Nuhr, 2015-11-03 05:55:05

Если вы хотите определить свою собственную функцию, попробуйте следующее:

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
}
 0
Author: harish sharma, 2016-07-05 10:36:38
var str = "helloword~this~is~me";
var exploded = str.splice(~);

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

 0
Author: Abdullahi Mako Ayuba, 2017-04-13 21:17:19

Попробуй вот так,

ans = str.split (":");

И вы можете использовать две части строки, например,

Ответ[0] и ответ[1]

 0
Author: meignanamoorthy ks, 2018-04-18 10:16:49