web-dev-qa-db-ja.com

Javascriptと同じ PHP 爆発()

このような文字列があります。

0000000020C90037:TEMP:データ

そして、最初のコロンの後にすべてをつかむ必要があるので、TEMP:データがあります。

PHPであれば、私はJavascriptで仕事をすることはあまりありません。

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

これは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'
580
John Hartsock

分割する必要はありません。 indexOf および substr を使用できます。

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

しかしexplodeと同等のものは split になります。

44
Felix Kling
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']
29
psycho brm

あなたが欲しいように見えます split

27
Quentin

これを試して:

arr = str.split (":");
7
weltraumpirat

オブジェクトを作成します。

// 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
JM Design

String.splitを使う

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

4
German Rumm

Phpが好きなら、 php.JS - JavaScript explode をご覧ください。

あるいは通常のJavaScript機能では:

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

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

出力:TEMP:data

  • .split()は文字列を部分に分解します
  • .join()は、配列を再度組み立てて文字列にします。
  • 最初の項目なしで配列が欲しいときは、.slice(1)を使用してください。
3
exebook

John Hartsock を批判するつもりはありません。デリミタの数が与えられたコードを使う人のために変わるかもしれない場合に備えて、私は正式に代わりにこれを使うことをお勧めします...

var mystr = '0000000020C90037:TEMP:data';
var myarr = mystr.split(":");
var arrlen = myarr.length;
var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1];
2
dylan maxey
var str = '0000000020C90037:TEMP:data';    // str = "0000000020C90037:TEMP:data"
str = str.replace(/^[^:]+:/, "");          // str = "TEMP:data"
1
Ruben Kazumov

だから私はこの記事がかなり古くなっていることを知っていますが、私は長年にわたって私を助けてきた機能を追加することも同様に考えました。上記のようにsplitを使用して単にexplode関数を作り直さないのはなぜですか?まあ、それはそれです:

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

この関数は、2つの値の間の値を取得しようとしている場合にはうまく機能します。例えば:

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

2つの[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

ワナはそれを実際に見ていますか? ここ をクリックします。

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

展開された変数は配列を返します、そしてあなたはそれにアクセスしている配列の要素にアクセスすることができますtrue展開された[nth]ここでnthはあなたが得たい値のインデックスです。

あなたがあなた自身の関数を定義したいならば、これを試してください:

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
harish sharma

このようにしてみてください

ans = str.split (":");

そして、次のような文字列の2つの部分を使用できます。

ans [0]およびans [1]

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;
}
0
Efi Nuhr

スライス、分割、結合を使用しました

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