मैं किसी विशेष चरित्र पर तोड़ने, एक स्ट्रिंग कैसे विभाजित करूं?

मेरे पास यह स्ट्रिंग है

'john smith~123 Street~Apt 4~New York~NY~12345'

जावास्क्रिप्ट का उपयोग करके, इसे पार्स करने का सबसे तेज़ तरीका क्या है

var name = "john smith";
var street= "123 Street";
//etc...
0

11 उत्तर

आप जावास्क्रिप्ट के substr </ए> या विभाजन के रूप में यह है वास्तव में jQuery के लिए उपयुक्त एक कार्य नहीं है

0
जोड़ा

यदि स्प्लिटर पाया जाता है तब केवल

उसका विभाजन कर दो

else return the same string

function SplitTheString(ResultStr) {
    if (ResultStr != null) {
        var SplitChars = '~';
        if (ResultStr.indexOf(SplitChars) >= 0) {
            var DtlStr = ResultStr.split(SplitChars);
            var name  = DtlStr[0];
            var street = DtlStr[1];
        }
    }
}
0
जोड़ा

पाठ को विभाजित करने के लिए आप विभाजन का उपयोग कर सकते हैं।

एक विकल्प के रूप में, आप अनुसरण के रूप में match का भी उपयोग कर सकते हैं

<div class="snippet" data-lang="js" data-hide="false"> <div class="snippet-code">

var str = 'john smith~123 Street~Apt 4~New York~NY~12345';
matches = str.match(/[^~]+/g);

console.log(matches);
document.write(matches);
</div> </div>

Regex [^ ~] + ~ को छोड़कर सभी वर्णों से मेल खाएगा और मैचों को सरणी में वापस कर देगा। इसके बाद आप उससे मिलान निकाल सकते हैं।

0
जोड़ा
जोड़ा लेखक Andrew Willems, स्रोत
यह मेरे लिए काम किया! str.split (); फ़ायरफ़ॉक्स में काम नहीं कर रहा था, लेकिन यह क्रोम और फ़ायरफ़ॉक्स दोनों में काम करता था।
जोड़ा लेखक Sandeep, स्रोत

अच्छा, सबसे आसान तरीका कुछ ऐसा होगा:

var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]
0
जोड़ा

ECMAScript6 <�कोड> ES6 के अनुसार, साफ तरीका सरणी को नष्ट कर रहा है:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="true"> <div class="snippet-code">

const input = 'john smith~123 Street~Apt 4~New York~NY~12345';
const [name, street, unit, city, state, zip] = input.split('~');

console.log(name);//john smith
console.log(street);//123 Street
console.log(unit);//Apt 4
console.log(city);//New York
console.log(state);//NY
console.log(zip);//12345
</div> </div>

आपके पास इनपुट स्ट्रिंग में अतिरिक्त आइटम हो सकते हैं। इस मामले में, आप बाकी के लिए सरणी प्राप्त करने के लिए बाकी ऑपरेटर का उपयोग कर सकते हैं या उन्हें अनदेखा कर सकते हैं:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="true"> <div class="snippet-code">

const input = 'john smith~123 Street~Apt 4~New York~NY~12345';
const [name, street, ...others] = input.split('~');

console.log(name);//john smith
console.log(street);//123 Street
console.log(others);//["Apt 4", "New York", "NY", "12345"]
</div> </div>

मुझे मूल्यों के लिए केवल पढ़ने के लिए संदर्भ माना जाता था और const घोषणा का उपयोग किया जाता था।

ES6 का आनंद लें!

0
जोड़ा
@ सल्लार हाँ धन्यवाद दोस्त!
जोड़ा लेखक hallaji, स्रोत
आप किसी आइटम को भी छोड़ सकते हैं: const [name, unit, ... others] = ...
जोड़ा लेखक Sallar, स्रोत

हालांकि यह सबसे आसान तरीका नहीं है, आप यह कर सकते हैं:

var addressString = "~john smith~123 Street~Apt 4~New York~NY~12345~",
    keys = "name address1 address2 city state zipcode".split(" "),
    address = {};

// clean up the string with the first replace
// "abuse" the second replace to map the keys to the matches
addressString.replace(/^~|~$/g).replace(/[^~]+/g, function(match){
    address[ keys.unshift() ] = match;
});

// address will contain the mapped result
address = {
    address1: "123 Street"
    address2: "Apt 4"
    city: "New York"
    name: "john smith"
    state: "NY"
    zipcode: "12345"
}

विनाशकारी का उपयोग करके ES2015 के लिए अद्यतन करें

const [address1, address2, city, name, state, zipcode] = addressString.match(/[^~]+/g);

// The variables defined above now contain the appropriate information:

console.log(address1, address2, city, name, state, zipcode);
// -> john smith 123 Street Apt 4 New York NY 12345
0
जोड़ा
क्या आप समझा सकते हैं कि यह कैसे काम करता है?
जोड़ा लेखक Glycan, स्रोत
सबसे पहले हमारे पास '~' संकेतों और keys की एक सरणी से अलग स्ट्रिंग है। दूसरा प्रतिस्थापन फ़ंक्शन प्रत्येक कोड (यानी '123 स्ट्रीट', 'Apt 4', आदि) से मेल खाने के लिए [^ ~] + का उपयोग कर रहा है और प्रत्येक भाग के लिए फ़ंक्शन को कॉल करता है, इसे तर्क के रूप में पास करता है । प्रत्येक रन पर, फ़ंक्शन कुंजी कुंजी से पहली कुंजी लेता है (इसे Array.unshift का उपयोग करके भी हटा देता है) और पता ऑब्जेक्ट में कुंजी और भाग असाइन करता है।
जोड़ा लेखक ewino, स्रोत

आपको jQuery की आवश्यकता नहीं है।

var s = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = s.split(/~/);
var name = fields[0];
var street = fields[1];
0
जोड़ा
यह इंगित करने के लिए धन्यवाद कि विभाजन एक regex स्वीकार करता है!
जोड़ा लेखक phunehehe, स्रोत
आपको इस सरल प्रतिस्थापन में रेगेक्स जोड़ने की आवश्यकता नहीं है। अगर कुछ भी हो तो यह केवल धीमा कर देगा। आप इसे एक साधारण स्ट्रिंग प्रतिस्थापन के लिए उद्धरण चिह्नों में बदल सकते हैं।
जोड़ा लेखक Anish Gupta, स्रोत

जावास्क्रिप्ट के String.prototype.split </कोड> फ़ंक्शन:

var input = 'john smith~123 Street~Apt 4~New York~NY~12345';

var fields = input.split('~');

var name = fields[0];
var street = fields[1];
// etc.
0
जोड़ा
@ ImaginedDesign आप गलत हैं। जावास्क्रिप्ट आपको सिंगल कोट्स और डबल कोट्स का एक-दूसरे का उपयोग करने देता है। केवल अंतर यह है कि किस उद्धरण को उनके भीतर से बचने की जरूरत है - \ ' या \ "। लोगों के उत्तरों में जो पैटर्न आपने देखा वह सिर्फ एक संयोग था; उद्धरण का प्रकार उपयोग व्यक्तिगत वरीयता है।
जोड़ा लेखक Rory O'Kane, स्रोत
ऐसा लगता है कि जावास्क्रिप्ट को सिंगल कोट्स का उपयोग करने के लिए विभाजन की आवश्यकता होती है और jQuery को डबल कोट्स के उपयोग की आवश्यकता होती है। उम्मीद है कि यह दूसरों की मदद करता है।
जोड़ा लेखक ImaginedDesign, स्रोत
यह एक सरणी "विभाजन" नाम देने के लिए पूरी तरह से wacko है। ऐसा लगता है कि सरणी का नाम एक समारोह है। सीमित ज्ञान वाले किसी के लिए बहुत भ्रमित।
जोड़ा लेखक gravityboy, स्रोत

कुछ इस तरह:

var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];

शायद सबसे आसान होने जा रहा है

0
जोड़ा
नहीं, आप या तो विभाजन ("~") या विभाजन (/ ~ /) चाहते हैं लेकिन विभाजन ("/ ~ /") नहीं चाहते हैं। उत्तरार्द्ध केवल "जॉन/~/स्मिथ" और "जॉन ~ स्मिथ" को विभाजित नहीं करेगा।
जोड़ा लेखक Andrew Willems, स्रोत

Zach had this one right.. using his method you could also make a seemingly "multi-dimensional" array.. I created a quick example at JSFiddle http://jsfiddle.net/LcnvJ/2/

// array[0][0] will produce brian
// array[0][1] will produce james

// array[1][0] will produce kevin
// array[1][1] will produce haley

var array = [];
    array[0] = "brian,james,doug".split(",");
    array[1] = "kevin,haley,steph".split(",");
0
जोड़ा

इस कोड का प्रयोग करें ------

function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");

}
0
जोड़ा