Javascript Эквивалент PHP Разнесение () - PullRequest
332 голосов
/ 23 декабря 2010

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

0000000020C90037: TEMP: data

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

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

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

Ответы [ 17 ]

1 голос
/ 14 февраля 2015

Просто небольшое дополнение к ответу psycho brm (его версия не работает в IE <= 8).Этот код совместим с разными браузерами: </p>

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;
}
1 голос
/ 13 января 2015
var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"
0 голосов
/ 10 декабря 2018

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

      let arrys = (str.split(":").slice(1)).join(":");
0 голосов
/ 18 апреля 2018

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

ans = str.split (":");

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

ans [0] и ans [1]

0 голосов
/ 14 апреля 2017
var str = "helloword~this~is~me";
var exploded = str.splice(~);

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

0 голосов
/ 05 июля 2016

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

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/

0 голосов
/ 06 января 2015

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...