Javascript相当于PHP Explode()

时间:2010-12-22 22:34:34

标签: javascript php string

我有一个看起来像这样的字符串:

  

0000000020C90037:TEMP:数据

我需要在第一次冒号之后抓住所有东西,这样我就有了TEMP:data。

我不经常使用Javascript,如果它是PHP我会这样做:

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

17 个答案:

答案 0 :(得分:581)

这是从您的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'

答案 1 :(得分:44)

您无需拆分。您可以使用indexOfsubstr

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

但相当于explode的是split

答案 2 :(得分:29)

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

答案 3 :(得分:27)

看起来你想要split

答案 4 :(得分:7)

试试这个:

arr = str.split (":");

答案 5 :(得分:5)

创建一个对象:

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

答案 6 :(得分:4)

使用String.split

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

答案 7 :(得分:4)

如果您喜欢php,请查看php.JS - JavaScript explode

或者在普通的JavaScript功能中: `

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

答案 8 :(得分:3)

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

输出:TEMP:data

  • .split()会将字符串反汇编为部分
  • .join()将数组重新组合回字符串
  • 如果您想要没有第一项的数组,请使用.slice(1)

答案 9 :(得分:2)

无意评论John Hartsock,以防使用给定代码的任何人的分隔符数量不同,我会正式建议使用此代码......

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

答案 10 :(得分:1)

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

答案 11 :(得分:0)

所以我知道这篇文章很老了,但我想我也可以添加一个多年来一直帮助我的功能。为什么不使用如上所述的拆分重制爆炸功能呢?那么这就是:

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
瓦纳看到它在行动?点击here

答案 12 :(得分:0)

只是对 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;
}

答案 13 :(得分: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/

答案 14 :(得分:0)

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

爆炸变量将返回数组并且您可以访问数组的元素来访问它真实爆炸[nth]其中nth是您想要获得的值的索引

答案 15 :(得分:0)

尝试这样,

ans = str.split (":");

你可以使用字符串的两个部分,如

ans [0]和ans [1]

答案 16 :(得分:0)

我使用了切片,拆分和合并 您可以只编写一行代码

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