मेरे पास यह तार है
'john smith~123 Street~Apt 4~New York~NY~12345'
जावास्क्रिप्ट का उपयोग करना, इसे पार्स करने का सबसे तेज़ तरीका क्या है
var name = "john smith";
var street= "123 Street";
//etc...
मेरे पास यह तार है
'john smith~123 Street~Apt 4~New York~NY~12345'
जावास्क्रिप्ट का उपयोग करना, इसे पार्स करने का सबसे तेज़ तरीका क्या है
var name = "john smith";
var street= "123 Street";
//etc...
जवाबों:
जावास्क्रिप्ट के 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.
आपको 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];
ECMAScript6 के अनुसार ES6
, स्वच्छ तरीका सरणियों को नष्ट कर रहा है:
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
आपके पास इनपुट स्ट्रिंग में अतिरिक्त आइटम हो सकते हैं। इस स्थिति में, आप बाकी के लिए एक सरणी प्राप्त करने के लिए रेस्ट ऑपरेटर का उपयोग कर सकते हैं या बस उन्हें अनदेखा कर सकते हैं:
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"]
मुझे मूल्यों के लिए केवल-पढ़ने के लिए संदर्भ चाहिए और const
घोषणा का उपयोग किया ।
ES6 का आनंद लें!
const [name, , unit, ...others] = ...
हालांकि यह सबसे सरल तरीका नहीं है, आप यह कर सकते हैं:
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
keys
। दूसरा बदला हुआ फ़ंक्शन [^~]+
प्रत्येक अलग-अलग भाग (यानी '123 स्ट्रीट', 'Apt 4', आदि) से मेल खाने के लिए उपयोग कर रहा है और प्रत्येक भाग के लिए फ़ंक्शन को तर्क के रूप में कहता है। प्रत्येक रन पर, फ़ंक्शन कुंजियों के सरणी से पहली कुंजी लेता है (यह भी Array.unshift का उपयोग करके इसे हटाता है) और कुंजी और भाग को एड्रेस ऑब्जेक्ट को असाइन करता है।
यदि स्प्लिटर पाया जाता है तो ही
उसका विभाजन कर दो
वरना उसी तार को लौटाओ
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]; } } }
कुछ इस तरह:
var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];
शायद सबसे आसान होने वाला है
split("~")
या तो चाहते हैं या split(/~/)
नहीं split("/~/")
। उत्तरार्द्ध केवल विभाजित होगा "John/~/Smith"
और नहीं "John~Smith"
।
आप split
पाठ को विभाजित करने के लिए उपयोग कर सकते हैं ।
एक विकल्प के रूप में, आप match
अनुसरण के रूप में भी उपयोग कर सकते हैं
var str = 'john smith~123 Street~Apt 4~New York~NY~12345';
matches = str.match(/[^~]+/g);
console.log(matches);
document.write(matches);
Regex [^~]+
सभी वर्णों को मिलाएगा ~
और मैचों को एक सरणी में लौटाएगा। फिर आप इसमें से मैच निकाल सकते हैं।
str.split();
फ़ायरफ़ॉक्स में काम नहीं कर रहा था, लेकिन यह क्रोम और फ़ायरफ़ॉक्स दोनों में काम करता था।
str.split();
फ़ायरफ़ॉक्स और सभी प्रमुख ब्राउज़रों में काम करता है ।
Zach का यह एक अधिकार था .. उसकी विधि का उपयोग करके आप एक "बहु-आयामी" सरणी बना सकते हैं .. मैंने 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(",");
जावास्क्रिप्ट: स्ट्रिंग स्ट्रिंग को ऐरे जावास्क्रिप्ट स्प्लिट में बदलें
var str = "This-javascript-tutorial-string-split-method-examples-tutsmake."
var result = str.split('-');
console.log(result);
document.getElementById("show").innerHTML = result;
<html>
<head>
<title>How do you split a string, breaking at a particular character in javascript?</title>
</head>
<body>
<p id="show"></p>
</body>
</html>
https://www.tutsmake.com/javascript-convert-string-to-array-javascript/
इससे string.split("~")[0];
चीजें हो जाती हैं।
स्रोत: String.prototyp.split ()
करी और फ़ंक्शन संरचना का उपयोग करके एक और कार्यात्मक दृष्टिकोण।
तो पहली बात यह होगी कि विभाजित कार्य। हम इस बनाना चाहते "john smith~123 Street~Apt 4~New York~NY~12345"
इस में["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
const split = (separator) => (text) => text.split(separator);
const splitByTilde = split('~');
तो अब हम अपने विशेष splitByTilde
फ़ंक्शन का उपयोग कर सकते हैं । उदाहरण:
splitByTilde("john smith~123 Street~Apt 4~New York~NY~12345") // ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
पहला तत्व प्राप्त करने के लिए हम list[0]
ऑपरेटर का उपयोग कर सकते हैं । चलो एक first
समारोह बनाएँ :
const first = (list) => list[0];
एल्गोरिथ्म है: बृहदान्त्र द्वारा विभाजित और फिर दी गई सूची का पहला तत्व प्राप्त करें। इसलिए हम अपने अंतिम getName
कार्य के निर्माण के लिए उन कार्यों की रचना कर सकते हैं । के compose
साथ एक समारोह का निर्माण reduce
:
const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);
और अब इसका उपयोग रचना splitByTilde
और first
कार्यों के लिए।
const getName = compose(first, splitByTilde);
let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
//basic url=http://localhost:58227/ExternalApproval.html?Status=1
var ar= [url,statu] = window.location.href.split("=");
चूंकि अल्पविराम प्रश्न पर विभाजन को इस प्रश्न के साथ दोहराया गया है, इसलिए इसे यहां जोड़ा गया है।
आप एक चरित्र पर विभाजित है और यह भी अतिरिक्त व्हाइट कि उस चरित्र है, जो अक्सर अल्पविराम के साथ होता है का पालन कर सकते हैं हैंडल करना चाहते हैं, तो आप उपयोग कर सकते हैं replace
तो split
इस तरह,:
var items = string.replace(/,\s+/, ",").split(',')
इस कोड का उपयोग करें -
function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");
}