JavaScript对应于PHP中的Explode()函数

389

我有这个字符串:

0000000020C90037:TEMP:data

我需要这个字符串:

TEMP:data.

使用PHP,我会这样做:

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

我怎么在JavaScript中有效地实现像PHP中explode函数的功能?

17个回答

1

对于psycho brm的回答,只有一个小改动(他的版本在IE8及以下版本不起作用)。 这段代码是跨浏览器兼容的:

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
var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"

非常机智的回答。我想知道它与传统的分割相比表现如何。 - NobleUplift

1

我使用了slice、split和join函数。你只需要写一行代码。

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

0

我知道这篇文章已经很老了,但我想我可以添加一个多年来帮助过我的函数。为什么不使用上面提到的split重新制作explode函数呢?好吧,这就是它:

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

如果你想获取两个值之间的数值,那么这个函数会很好用。例如:

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

如果您想获取两个[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
如果您想定义自己的函数,请尝试这个:

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

试试这样写:

ans = str.split (":");

你可以像这样使用字符串的两部分,

ans[0] 和 ans[1]


2
也许可以解释一下这与8年前发布的被接受答案有何不同。 - Lece

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

使用explode函数后,将返回一个数组,您可以通过访问exploded[nth]来访问数组的元素,其中nth是要获取的值的索引。


2
这根本不起作用!splice接受两个数字和字符串作为参数,而不是~(这会导致语法错误)。并且splice不是为此目的而设计的,它是用来从数组中获取/取出项目或添加到数组中的。 - CPHPython

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接