আমি একটি স্ট্রিংকে কীভাবে আলাদা করে একটি বিশেষ চরিত্রকে ভেঙে দেব?


532

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

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

জাভাস্ক্রিপ্ট ব্যবহার করে এটিকে পার্স করার দ্রুততম উপায় কোনটি

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

উত্তর:


844

জাভাস্ক্রিপ্ট এর 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.

51

আপনার 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];

53
এই সরল প্রতিস্থাপনে আপনাকে রেজেক্স যুক্ত করার দরকার নেই। এটি কেবল কিছু হলে এটি ধীর করে দেবে। সাধারণ স্ট্রিং প্রতিস্থাপনের জন্য আপনি এটিকে উদ্ধৃতি চিহ্নগুলিতে পরিবর্তন করতে পারেন।
আনিস গুপ্ত

47

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 উপভোগ করুন!


6
আপনি কোনও const [name, , unit, ...others] = ...
আইটেমও

16

যদিও এটি সহজতম উপায় নয় তবে আপনি এটি করতে পারেন:

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

4
প্রথমে আমাদের '~' চিহ্ন এবং একটি অ্যারের দ্বারা পৃথক একটি স্ট্রিং রয়েছে keys। দ্বিতীয় প্রতিস্থাপন ফাংশনটি [^~]+প্রতিটি পৃথক অংশের (যেমন '123 স্ট্রিট', 'এপটি 4' ইত্যাদি) মেলাতে ব্যবহার করে এবং প্রতিটি অংশের জন্য ফাংশনটিকে আর্গুমেন্ট হিসাবে পাস করে ডাকে। প্রতিটি রানে, ফাংশনটি কীগুলি অ্যারে থেকে প্রথম কীটি নেয় (এটি অ্যারে.উনশিফ্ট ব্যবহার করে অপসারণ করে) এবং কী এবং অংশটি অ্যাড্রেস অবজেক্টে বরাদ্দ করে।
ইভিনো


5

ভাল, সবচেয়ে সহজ উপায়টি এরকম কিছু হবে:

var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]

5

তাহলে Spliter পাওয়া যায় তবে কেবলমাত্র

এটা ভাগ কর

অন্যথায় একই স্ট্রিং ফিরে

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

4

কিছুটা এইরকম:

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

সম্ভবত সবচেয়ে সহজ হতে চলেছে


2
না, আপনি চান split("~")বা split(/~/)না চান split("/~/")। পরেরটি শুধুমাত্র বিভক্ত হবে "John/~/Smith"এবং না "John~Smith"
অ্যান্ড্রু উইলিয়ামস

4

আপনি splitটেক্সট বিভক্ত করতে ব্যবহার করতে পারেন ।

বিকল্প হিসাবে, আপনি নিম্নলিখিত matchহিসাবে ব্যবহার করতে পারেন

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

console.log(matches);
document.write(matches);

রেজেক্স [^~]+সমস্ত অক্ষরের ~সাথে মিলে যাবে এবং মিলগুলিকে একটি অ্যারেতে ফিরিয়ে দেবে। তারপরে আপনি এটি থেকে মিলগুলি বের করতে পারেন।


1
এটি আমার পক্ষে কাজ করেছিল! str.split();ফায়ারফক্সে কাজ করে না, তবে এটি ক্রোম এবং ফায়ারফক্স উভয় ক্ষেত্রেই কাজ করে।
সন্দীপ


2

জাচের এই অধিকার ছিল .. তার পদ্ধতিটি ব্যবহার করে আপনি একটি আপাতদৃষ্টিতে "বহু-মাত্রিক" অ্যারেও তৈরি করতে পারেন .. আমি জেএসফিডেল একটি দ্রুত উদাহরণ তৈরি করেছি 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(",");

2

জাভাস্ক্রিপ্ট: স্ট্রিং এ অ্যারে জাভাস্ক্রিপ্ট বিভক্তে রূপান্তর করুন

    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/


1

এটি string.split("~")[0];জিনিস হয়ে যায়।

উত্স: স্ট্রিং.প্রোটোটাইপ.স্প্লিট ()


তরকারী এবং ফাংশন রচনা ব্যবহার করে অন্য কার্যকরী পন্থা।

সুতরাং প্রথম জিনিস বিভক্ত ফাংশন হবে। আমরা এই করতে চাই "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ফাংশনটি তৈরি করতে functions ফাংশনগুলি রচনা করতে পারি । এর 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"

1

সরল জাভাস্ক্রিপ্টে চেষ্টা করুন

 //basic url=http://localhost:58227/ExternalApproval.html?Status=1

 var ar= [url,statu] = window.location.href.split("=");

0

যেহেতু কমা প্রশ্নের বিভাজন এই প্রশ্নের সদৃশ, এখানে এটি যুক্ত করে।

আপনি যদি কোনও চরিত্রে বিভক্ত হয়ে যেতে চান এবং সেই অতিরিক্ত চরিত্রটিও পরিচালনা করতে পারেন যা এই চরিত্রটি অনুসরণ করে যা প্রায়শই কমা দ্বারা ঘটে থাকে replaceতবে আপনি এটির splitমতো ব্যবহার করতে পারেন :

var items = string.replace(/,\s+/, ",").split(',')

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