জাভাস্ক্রিপ্ট পিএইচপি বিস্ফোরণের সমতুল্য ()


353

আমার এই স্ট্রিং রয়েছে:

0000000020C90037 সমূহঃ টেম্প: ডেটা

আমার এই স্ট্রিংটি দরকার:

টেম্প: তথ্য।

পিএইচপি সহ আমি এটি করব:

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

আমি কীভাবে explodeজাভাস্ক্রিপ্টে স্ট্রিংটি পিএইচপি-তে কার্যকরভাবে কাজ করব?

উত্তর:


607

এটি আপনার পিএইচপি কোড থেকে সরাসরি রূপান্তর:

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

75
এটি লক্ষ করা উচিত যে অ্যারেটি [0]
হের

52
@ হার ক্যালুন ... এটি বোঝা গেল ... তবে ওপি অ্যারেতে শেষ দুটি আইটেম চেয়েছিল।
জন হার্টসক

4
+1: এটি সঠিক; এখানে MDN থেকে একটি লিঙ্ক আছে: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/... । এবং "বিপরীত" দিক, সুতরাং পিএইচপি ইমপ্লোড () সমতুল্য হ'ল myArray.join (':'): developer.mozilla.org/en/
জাভা স্ক্রিপ্ট

12
দ্রষ্টব্য : split(delimiter,limit)সীমাবদ্ধতার প্যারামিটারের সীমা পরামিতিগুলির মতো কাজ করে না explode($delimiter,$string,$limit)। উদাহরণ: explode('.','1.2.3.4',3) === array('1','2','3.4')- জাভাস্ক্রিপ্ট যখন, আপনি পাবেন: '1.2.3.4'.split('.',3) === ['1', '2', '3']। যে কেউ পিএইচপি এর পদ্ধতিটি সহজেই প্রতিলিপি করতে জানেন?
নাথান জেবি

1
অ্যারে [0] স্টাফগুলি পরিষ্কার করার জন্য আমি একটি কোড মন্তব্য যুক্ত করেছি, নতুনদের বিভ্রান্ত করতে পারে ...
এনডিএম

46

আপনার বিভক্ত হওয়ার দরকার নেই। আপনি ব্যবহার করতে পারেন indexOfএবং substr:

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

তবে সমান explodeহবে split


5
কেউ সম্ভবত ভেবেছিল যে আপনি ছদ্মবেশী হয়ে উঠছেন। কখনও কখনও আপনাকে সমস্ত কিছু ব্যাখ্যা করতে হবে। উদাহরণস্বরূপ, "আপনার সমস্যাটি 'ইন্ডেক্সআফ' দ্বারা সবচেয়ে ভাল সমাধান করা হয়েছে ... তবে 'বিভক্ত' আপনার প্রশ্নের উত্তর আক্ষরিকভাবে দেয়" "
জোয়েল মেলন

ডাউনভোটার: " আমার পূর্ব ধারণাটি যাচাই না করে আপনি আরও সহজ এবং আরও পারফরম্যান্স সমাধান সরবরাহ করার সাহস কিভাবে করবেন ??"
jchook

37
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;
};

পিএইচপি'র বিস্ফোরণ () ফাংশনটি হুবহু নকল করা উচিত।

'a'.explode('.', 2); // ['a']
'a.b'.explode('.', 2); // ['a', 'b']
'a.b.c'.explode('.', 2); // ['a', 'b.c']

7
হচ্ছে জন্য যশ শুধুমাত্র এক, যতটা আমি দেখতে পারেন, একটি প্রদান ACTUAL টি (যেমন মূল প্রশ্ন প্রতি) পিএইচপি এর বিস্ফোরিত করা কার্যকারিতা সমতুল্য।
ফাজশিফ্ট

1
কি সহজ এবং মার্জিত সমাধান, আমি আশা করি এটি গৃহীত প্রতিক্রিয়া ছিল।
soger



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
সামান্য ওভারকিল বলে মনে হচ্ছে, প্রতিক্রিয়াটির জন্য টাই
ডগ মলিনাক্স 4:51


4

আপনি যদি পিএইচপি পছন্দ করেন তবে php.JS - জাভাস্ক্রিপ্ট বিস্ফোরণে একবার দেখুন

বা সাধারণ জাভাস্ক্রিপ্ট কার্যকারিতা: `

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

আমি তার দিকে চেয়ে চেয়েছিলাম, তবে আমার সামনে কেবল অগোছালো জাভাস্ক্রিপ্ট পেয়েছে। আহ emptyArray = { 0: '' },? : - /
মার্সেল কার্পেল

আমি বলিনি যে এটি সর্বোত্তম সমাধান, তবে আপনি জাভস্ক্রিপ্টে নতুন হন এবং পিএইচপি সঙ্গে পরিচিত হন তবে এটি একটি ভাল সমাধান। তবে আমি আরও একটি উদাহরণ লেখার একটি কারণ ছিল। :) "এটিকে সহজ বোকা রাখুন!";)
এরিকস 8888

এটি যুক্তিসঙ্গত মনে হয়, তবে আমি মনে করি যে একজনকে একটির প্রোগ্রামিংয়ের ভাষা অন্য ভাষায় রূপান্তর করতে হবে না; এটি নবাগতদের জন্য বিভ্রান্তিকর হতে পারে যারা ভাবেন যে জাভাস্ক্রিপ্টে ওওপি সি ++ তে ওওপির মতো। তদুপরি, কেউ হয়ত লিঙ্কযুক্ত ফাংশনটি অনুলিপি করে আটকান এবং মনে করে যে একজনকে সেভাবে অ্যারেগুলি সংজ্ঞায়িত করতে হবে।
মার্সেল করপেল

হ্যাঁ, পুরোপুরি সেখানে একমত! কিন্তু এটি আসলে তার হাতে কোড পাচ্ছে না। এবং এটাই. যদি তিনি পিএইচপি জানেন, তাই সম্ভবত তিনি পিএইচপি-তে সামান্য জিনিস মিস করেন। এটি সর্বোত্তম যুক্তি আমি লজিকের কথা উল্লেখ করছি, কোনও অনুলিপি পেস্টেল সমাধান হিসাবে নয়, এর থেকে ভাল সমাধান কখনও হয় না! আমার অভিজ্ঞতা হ'ল সেই দিনটি বুঝতে পারে যে এর অনেক কিছুই শিখতে হবে, যখন আপনি সঠিক পথে রইলেন।
eriksv88

+1 যতদূর আমি দেখতে পাচ্ছি এটিই একমাত্র সমাধান যা পিএইচপি হিসাবে একই কাজ করে। যদি ডিলিমিটারটি না পাওয়া যায় তবে ফলাফলটি মূল স্ট্রিং explode('foo','bar'); // 'bar'is এই কারণেই আমি এখানে পৌঁছেছি এবং আমার উদ্দেশ্যে একটি অনুলিপি এবং পেস্ট স্ক্রিপ্ট যা সীমাবদ্ধতার সাথে আমি ব্যবহার করতে চাইছি তা একেবারে নিখুঁত। আমার নিজের তৈরি করার জন্য আমাকে পাশ কাটিয়ে যেতে হবে না। কেন সর্বোপরি চাকাটিকে পুনরায় উদ্ভাবন করুন, চুম্বন করুন
অ্যান্ডি জি

4

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

আউটপুট: TEMP:data

  • .split () স্ট্রিংকে কিছু অংশে বিচ্ছিন্ন করবে
  • .join () অ্যারেটিকে আবার স্ট্রিংয়ে আবার সংযুক্ত করে
  • আপনি যখন অ্যারেটি প্রথম আইটেম ছাড়াই চান তখন স্লাইস (1) ব্যবহার করুন

এই উত্তরের 554 টি উর্ধ্বতন থাকতে হবে, গৃহীত উত্তর নয়। এছাড়াও, গত 3 বছর ধরে গৃহীত উত্তর সম্পূর্ণ ভুল হয়েছে , 0 ও 1 সূচকগুলি যখন ওপি 1 এবং 2 চেয়েছিল
নোবেলপ্লিট

2

জন হার্টসকের সমালোচনা করার কোনও উদ্দেশ্য ছাড়াই , প্রদত্ত কোড ব্যবহার করা যে কারও জন্য ডিলিমিটারের সংখ্যা পৃথক হতে পারে, আমি তার পরিবর্তে আনুষ্ঠানিকভাবে এটি ব্যবহার করার পরামর্শ দেব ...

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

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

খুব মজার উত্তর। আমি আশ্চর্য হয়েছি যে এটি একটি traditionalতিহ্যগত বিভাজনের তুলনায় কতটা ভাল সম্পাদন করে।
NobleUplift

1

সাইকো বিআরএম এর উত্তরে কিছুটা সংযোজন (তার সংস্করণ আইই <= 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

সুতরাং আমি জানি যে এই পোস্টটি বেশ পুরানো, তবে আমি বুঝতে পেরেছিলাম যে আমি কয়েক বছর ধরে আমাকে সহায়তা করে এমন একটি ফাংশনও যুক্ত করতে পারি। উপরোক্ত হিসাবে বিভাজন ব্যবহার করে কেন বিস্ফোরণ ফাংশনটি পুনরায় তৈরি করবেন না? ঠিক আছে এখানে:

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

ওয়ান এ্যাকশন দেখে? এখানে ক্লিক করুন


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

বিস্ফোরিত ভেরিয়েবল অ্যারে ফিরে আসবে এবং আপনি অ্যারের উপাদানগুলিতে এটি অ্যাক্সেস করতে পারবেন সত্য বিস্ফোরিত [nth] যেখানে nth আপনি পেতে চান এমন মানের সূচক


2
এটি এমনকি কাজ করে না! স্প্লাইস 2 টি সংখ্যা এবং স্ট্রিংগুলিকে প্যারামিটার হিসাবে গ্রহণ করে, একটি নয় ~(এটি একটি সিনট্যাক্স ত্রুটির কারণ করে)। এবং স্প্লাইস এই উদ্দেশ্যে নয়, এটি আইটেমগুলি আউট / আউট নেওয়া বা অ্যারেতে যুক্ত করা।
সিপিএইচপিথন

0

এইভাবে চেষ্টা করুন,

ans = str.split (":");

এবং আপনি স্ট্রিংয়ের দুটি অংশ ব্যবহার করতে পারেন,

উত্তর [0] এবং উত্তর [1]


2
সম্ভবত এটি ব্যাখ্যা করুন যে এটি 8 বছর আগে পোস্ট করা গৃহীত উত্তর থেকে কীভাবে আলাদা।
লেস

0

আমি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে বিভক্ত হয়ে যোগ দিয়েছি

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

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/


-1

ফেলিক্স ক্লিংয়ের কোডটি গতিশীল (স্বীকৃত উত্তরের মতো নয়) তবে প্রাথমিক উদাহরণের স্ট্রিংটি একটি ভয়ানক শুরুর পয়েন্ট। সুতরাং যাঁরা গুণমান এবং গতি চান তাদের জন্য তাঁর উত্তরটি (তিনি কেবল প্রশ্নের উত্তর দিচ্ছেন) দৃশ্যমানভাবে দেখানোর জন্য :

    var s = '1:2:3:4:5:6';
    console.log(s);
    s = s.substr(s.indexOf(':')+1);
    console.log(s);

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.