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

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

0000000020C90037: TEMP: данные

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

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

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

Ответ 1

Это прямое преобразование из вашего кода 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'

Ответ 2

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

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

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

Ответ 3

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']

Ответ 4

Похоже, вы хотите split

Ответ 5

Попробуйте следующее:

arr = str.split (":");

Ответ 6

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

// 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";

Ответ 7

Использовать String.split

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

Ответ 8

Если вам нравится php, посмотрите php.JS - JavaScript explode

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

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

Ответ 9

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

выходы: TEMP:data

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

Ответ 10

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

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

Ответ 11

var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"

Ответ 12

Итак, я знаю, что этот пост довольно старый, но я решил, что могу добавить функцию, которая помогла мне на протяжении многих лет. Почему бы просто не переделать функцию взрыва с использованием 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

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

Ответ 13

Просто небольшое дополнение к ответу psycho brm (его версия не работает в 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;
}

Ответ 14

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

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
}

Взято с: http://locutus.io/php/strings/explode/

Ответ 15

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

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

Ответ 16

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

ans = str.split (":");

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

ans [0] и ans [1]

Ответ 17

Я использовал ломтик, разделить и объединить Вы можете просто написать одну строку кода

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