2010-12-22 15 views
296

मैं एक स्ट्रिंग है कि इस तरह दिखता है:जावास्क्रिप्ट PHP के बराबर विस्फोट()

0000000020C90037: अस्थायी: डेटा

और मैं पहले कोलन के बाद सब कुछ हड़पने के लिए की जरूरत है, ताकि मैं टेम्प है: डेटा।

मैं अक्सर जावास्क्रिप्ट में काम नहीं करते है, अगर यह पीएचपी थे मैं यह कर जाएगा:

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

उत्तर

516
//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 
var myvar = myarr[0] + ":" + myarr[1]; 
+70

यह ध्यान दिया जाना चाहिए कि सरणी [0] – Herr

+48

@ हेर कालेन ... से समझा जाता है ... लेकिन ओपी सरणी में पिछले दो आइटम चाहता था। –

+4

+1: यह सही है; यहां एमडीएन से एक लिंक है: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split। और "विपरीत" दिशा, इसलिए PHP implode() समकक्ष myArray.join (':') है: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/join – Sk8erPeter

26

लगता है कि आप चाहते हैं split

+0

मेरे जैसे ही दूसरा! :) – thejh

4

उपयोग String.split

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

42

आपको विभाजित करने की आवश्यकता नहीं है। आप उपयोग कर सकते हैं indexOf और substr:

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

लेकिन explode के बराबर split होगा।

+6

डाउनवोट क्यों? –

+5

किसी ने शायद सोचा था कि आप snarky थे। कभी-कभी आपको सबकुछ समझा देना पड़ता है। उदाहरण के लिए, "आपकी समस्या सबसे अच्छी तरह से 'indexOf' द्वारा हल की जाती है ... लेकिन 'विभाजित' सचमुच आपके प्रश्न का उत्तर देती है।" –

3

आप php पसंद है, php.JS - JavaScript explode

पर या सामान्य JavaScript कार्यक्षमता में एक बार देख ले: `

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

मैं उसे देखना चाहता था, लेकिन मेरे सामने केवल गन्दा जावास्क्रिप्ट मिला। उम, 'खालीअरे = {0: ''} '? : -/ –

+0

मैंने यह नहीं कहा है कि यह सबसे अच्छा समाधान है, लेकिन यदि आप जावास्क्रिप्ट में नए हैं और PHP से परिचित हैं तो यह एक अच्छा समाधान है। लेकिन एक कारण था कि मैंने एक और उदाहरण क्यों लिखा। :) "इसे सरल बेवकूफ रखें!"; – sv88erik

+0

यह उचित लगता है, लेकिन मुझे लगता है कि किसी को एक प्रोग्रामिंग भाषा को दूसरे में बदलना नहीं चाहिए; जो नौसिखिया के लिए भ्रामक हो सकता है जो सोच सकता है कि जावास्क्रिप्ट में ओओपी सी ++ में ओओपी की तरह है। इसके अलावा, कोई भी लिंक किए गए फ़ंक्शन को प्रतिलिपि बना सकता है और सोच सकता है कि किसी को उस तरह से सरणी को परिभाषित करना होगा। –

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

प्रतिक्रिया के लिए थोड़ा सा लगता है, –

2
कोई इरादों John Hartsock, अगर सीमांकक की संख्या दी कोड का उपयोग कर किसी के लिए भिन्न हो सकते हैं आलोचना के साथ

, मैं औपचारिक रूप से इस के बजाय ...

var mystr = '0000000020C90037:TEMP:data'; 
var myarr = mystr.split(":"); 
var arrlen = myarr.length; 
var myvar = myarr[arrlen-2] + ":" + myarr[arrlen-1]; 
20
String.prototype.explode = function(separator, limit) 
{ 
    var arr = this.split(separator); 
    if (limit) arr.push(arr.splice(limit-1).join(separator)); 
    return arr; 
} 
+3

क्यूडो ** ** केवल ** एक होने के लिए, जहां तक ​​मैं देख सकता हूं, एक ** वास्तविक ** प्रदान करने के लिए PHP की विस्फोट कार्यक्षमता (मूल प्रश्न के अनुसार)। – faazshift

+0

क्या एक आसान और सुरुचिपूर्ण समाधान है, मेरी इच्छा है कि यह स्वीकार्य प्रतिक्रिया थी। – soger

2

उपयोग करने के लिए सुझाव है कि console.log(('0000000020C90037:TEMP:data').split(":").slice(1).join(':'))

आउटपुट: TEMP:data

  • .split() भागों में एक स्ट्रिंग एकत्रित न होगा
  • .join() सरणी वापस एक स्ट्रिंग
  • को reassembles जब आप सरणी यह ​​पहला आइटम, उपयोग .slice है बिना चाहते हैं (1)
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 पर क्लिक करें।

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

बस मनोवैज्ञानिक बी आर एम के जवाब देने के लिए एक छोटे से अतिरिक्त (अपने संस्करण आईई < = 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 (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
var str = "helloword~this~is~me"; 
var exploded = str.splice(~); 

विस्फोट चर सरणी वापस आ जाएगी और आप के तत्वों का उपयोग कर सकते इस कोड को पार ब्राउज़र संगत है सरणी इसे वास्तविक रूप से विस्फोटित कर रही है [nth] जहां nth वह मान है जो आप प्राप्त करना चाहते हैं

संबंधित मुद्दे