কমা দ্বারা পৃথক স্ট্রিংকে অ্যারেতে কীভাবে রূপান্তর করবেন?


719

আমার একটি কমা দ্বারা পৃথক স্ট্রিং রয়েছে যা আমি একটি অ্যারেতে রূপান্তর করতে চাই, তাই আমি এটির মধ্য দিয়ে লুপ করতে পারি।

এটি করার জন্য কি অন্তর্নির্মিত কিছু আছে?

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

var str = "January,February,March,April,May,June,July,August,September,October,November,December";

এখন আমি এটিকে কমা দ্বারা বিভক্ত করতে চাই এবং তারপরে এটি অ্যারেতে সঞ্চয় করতে চাই।


7
কেবল মন্তব্য করতে চেয়েছিলেন যে এটির jquery প্রয়োজন হয় না এটি নিজেই জাভাস্ক্রিপ্টের অংশ।
ক্রিস


4
সদৃশ সম্পর্কিত: এটি 18 মাসের মধ্যে রেফারেন্সযুক্ত প্রশ্নের পূর্বাভাস দেয়। যদি কিছু হয় তবে অন্যটি কেবল একটি
ডুপই নয় তবে রেজেেক্স

40
সহজ। string.split(',');
ব্র্যাডেন সেরা

4
কেন এটি "খুব স্থানীয়" হিসাবে চিহ্নিত হয়েছে তা নিশ্চিত নন। স্ট্রিং বিভাজন অনেকটা সামনে আসে এবং এটি সাধারণত ইন্টারনেটের বিশ্বব্যাপী দর্শকদের জন্য প্রযোজ্য (যেমনটি প্রমাণিত যে আমার উত্তর এখনও কোনওভাবে নিয়মিতভাবে উত্সাহ পেতে পারে)। আমি সন্দেহ করি যে আরও 4 জন লোক এসে আবার এটি খুলবে, তবে, এখনও। রহস্যময়।
ম্যাচু

উত্তর:


1216
var array = string.split(',');

এমডিএন রেফারেন্স , limitপ্যারামিটারের সম্ভবত অপ্রত্যাশিত আচরণের জন্য বেশিরভাগ সহায়ক । (ইঙ্গিত: "a,b,c".split(",", 2)আসে ["a", "b"], না ["a", "b,c"]।)


3
সংক্ষিপ্ত এবং মিষ্টি, জাভাস্ক্রিপ্ট stringজাভা কিছু সমৃদ্ধি আছে তা দেখতে সুন্দর String
মাইকেল শপসিন

সব ধরণের স্ট্রিং সমর্থন করার জন্য সেরা অনুশীলন। এখানে stackoverflow.com/a/32657055/2632619
Andi AR

6
যদিও splitযদি জিজ্ঞেস করা হয় জরিমানা কাজ করবে নিশ্চিত করুন যে আপনি উপাদান আছেarray , যেহেতু আপনি একটি সার্ভার / ডাটাবেস থেকে ডাটা আশা করছি কষ্ট চালানো হবে ''.split(',')একটি আছে length === 1অর্থাৎ,''.split(',') === ['']
oportocala

@ মিশেলশপসিন এবং সমস্ত, বিভক্ত ফাংশন আইই 11 এর সাথে কাজ করছে না কারণ এটি অপরিজ্ঞাত বা নাল রেফারেন্সের সম্পত্তি 'স্প্লিট' পেতে অক্ষম বলে।
ডিএলভি

@ ডিএলভি একটি নতুন প্রশ্নের মতো মনে হচ্ছে, স্ট্যাকওভারফ্লোতে ইতিমধ্যে আপনাকে প্রায়শই প্রশ্নগুলি জিজ্ঞাসা করার পরে জিজ্ঞাসা করা উচিত।
মাইকেল শপসিন 14

130

আপনি 1,2,3,4,5 এর মতো পূর্ণসংখ্যার দিকে লক্ষ্য রাখছেন কিনা তা দেখুন। যদি আপনি আপনার অ্যারের উপাদানগুলি স্ট্রিং বিভক্ত করার পরে স্ট্রিং হিসাবে না হিসাবে পূর্ণসংখ্যার হিসাবে ব্যবহার করতে চান তবে সেগুলিকে এগুলিতে রূপান্তর বিবেচনা করুন।

var str = "1,2,3,4,5,6";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");

এই মত একটি লুপ যুক্ত

for (a in temp ) {
    temp[a] = parseInt(temp[a], 10); // Explicitly include base as per Álvaro's comment
}

পূর্ণসংখ্যার সমন্বয়যুক্ত একটি অ্যারে প্রদান করবে, এবং স্ট্রিংগুলি নয়।


47
দয়া করে নোট করুন যে পার্সেন্ট () বেসটিকে অনুমান করার চেষ্টা করে যদি না আপনি এটি পরিষ্কারভাবে সেট করে থাকেন, যা নেতৃস্থানীয় শূন্যগুলি ( "001,002,003...") এর সাথে ডিল করার সময় অপ্রত্যাশিত ফলাফলের কারণ হতে পারে । parseInt('010')সঙ্গে তুলনা করুন parseInt('010', 10)
vlvaro González

3
আমি পারলে আলভারোর মন্তব্যে আরও বেশি করে তুলে ধরতাম। আমি সেই পাঠটি কিছুক্ষণ আগে শিখেছি এবং এটি কখনই ভুলিনি।
অ্যান্টনি স্কট

2
+1 এই উদাহরণটি আরও স্পষ্ট, এটি প্রমাণ করে যে স্ট্রিংটি কোনও স্ট্যাটিক অবজেক্ট নয় তবে প্রকৃতপক্ষে পরিবর্তনশীল যে স্ট্রিং।
K0D4

5
map: ফাংশন এক লাইনে পূর্ণসংখ্যা পার্সিং করতে ব্যবহার করা যেতে পারেstr.split(',').map(parseInt)
Jud

1
এটি সবচেয়ে কার্যকর সমাধান নয়। Chrome 49 এর অধীনে আমার পরীক্ষাগুলি অনুসারে J JSON.parse ('[' + str + ']') এই সমাধানের চেয়ে 40% দ্রুত faster
ইয়াও

33

হুম বিভাজন বিপজ্জনক ইমো হিসাবে একটি স্ট্রিং সর্বদা কমা থাকতে পারে, নিম্নলিখিতটি পর্যবেক্ষণ করুন:

var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');

তাহলে আপনি কীভাবে হস্তক্ষেপ করবেন? এবং ফলাফল আপনি কি চান? এর সাথে একটি অ্যারে:

['a', 'b', 'c', 'd', 'e', 'f', 'g', '\'', '\''] or 
['a', 'b', 'c', 'd', 'e', 'f', 'g', ',']

এমনকি যদি আপনি কমা থেকে পালাতে পারেন তবে আপনার একটি সমস্যা হবে।

এটি দ্রুত একসাথে ফিড:

(function($) {
    $.extend({
        splitAttrString: function(theStr) {
            var attrs = [];

            var RefString = function(s) {
                this.value = s;
            };
            RefString.prototype.toString = function() {
                return this.value;
            };
            RefString.prototype.charAt = String.prototype.charAt;
            var data = new RefString(theStr);

            var getBlock = function(endChr, restString) {
                var block = '';
                var currChr = '';
                while ((currChr != endChr) && (restString.value !== '')) {
                    if (/'|"/.test(currChr)) {
                        block = $.trim(block) + getBlock(currChr, restString);
                    }
                    else if (/\{/.test(currChr)) {
                        block = $.trim(block) + getBlock('}', restString);
                    }
                    else if (/\[/.test(currChr)) {
                        block = $.trim(block) + getBlock(']', restString);
                    }
                    else {
                        block += currChr;
                    }
                    currChr = restString.charAt(0);
                    restString.value = restString.value.slice(1);
                }
                return $.trim(block);
            };

            do {
                var attr = getBlock(',', data);
                attrs.push(attr);
            }
            while (data.value !== '');
            return attrs;
        }
    });
})(jQuery);

এটি ব্যবহার / সম্পাদনা করতে নির্দ্বিধায় :)


1
এটি সংখ্যার সাথেও দুর্দান্ত কাজ করে এবং নীচের অন্য উত্তরে বর্ণিত হিসাবে তাদের জন্য আমাদের আলাদা পার্সআইন্ট লুপ চালাতে হবে না। এটি বাস্তব গভীর চিন্তাভাবনা। এটির খুব প্রশংসা করুন এবং আমি মনে করি সবার মধ্যে সেরা উত্তরটি রয়েছে !!
আনমল সারাফ

28

বিভাজন () পদ্ধতিটি স্ট্রিংকে সাবস্ট্রিংয়ের অ্যারেতে বিভক্ত করতে ব্যবহৃত হয় এবং নতুন অ্যারে প্রদান করে।

var array = string.split(',');

ফলাফল কি হবে? উদাহরণস্বরূপ যদি আমার কাছে var a = "হ্যালো, ওয়ার্ল্ড, বেবি" থাকে; এবং var অ্যারে = a.split (','); -> আমার অ্যারেটি দেখতে এমন হবে: অ্যারে = ["হ্যালো", "দুনিয়া", "শিশু"]; ??
মূল বিকাশকারী

1
হা ঐটা ঠিক. ফলস্বরূপ অ্যারে আপনি উল্লেখ হিসাবে ঠিক হবে।
Jakkwylde

আপনার উত্তরটি আমার পক্ষে কাজ করছে তবে, আমার নতুন অ্যারেটি পুরানোটিকে প্রতিস্থাপন করছে না। আপনি কি আমাকে সাহায্য করতে পারেন? var sampleTags = ['vinita@itsabacus.com']; console.log(sampleTags); $("#order_id").on("change", function() { var order_id = document.getElementById('order_id').value; $.ajax({url: "model/getUserMailIds.php",data:{order_id:order_id},type:'POST', success: function(result){ alert(result); var sampleTags = result.split(',');; console.log(sampleTags); }}); });
বিনিতা পওয়ার

16

নোট করুন যে নিম্নলিখিত:

 var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);

সতর্ক করবে 1


14

আপনার কমা বিভাজনযুক্ত স্ট্রিংটি এই ফাংশনে পাস করুন এবং এটি একটি অ্যারে ফিরে আসবে, এবং যদি কমা-বিভাজিত স্ট্রিংটি পাওয়া যায় না তবে নালায় ফিরে আসবে।

 function splitTheString(CommaSepStr) {
       var ResultArray = null; 

// Check if the string is null or so.
        if (CommaSepStr!= null) {


             var SplitChars = ',';
   // Check if the string has comma of not will go to else
                if (CommaSepStr.indexOf(SplitChars) >= 0) {
                    ResultArray = CommaSepStr.split(SplitChars);

                }
             else { 
  // string has only one value, can also check the length of the string or time and cross-check too. 
                    ResultArray = [CommaSepStr]; 
              }
        }
       return ResultArray ;
    }

3
কেবল কোডের একটি ব্লক পোস্ট করার পরিবর্তে দয়া করে ব্যাখ্যা করুন যে এই কোডটি কেন ডেকে আনা সমস্যা সমাধান করে। কোনও ব্যাখ্যা ছাড়াই এটি কোনও উত্তর নয়।
মার্টিজন পিটারস

1
এটি সর্বাধিক সঠিক সমাধান যদি আপনি নিশ্চিত না হন যে স্ট্রিংটিতে আপনার বিভক্ত মান থাকবে। স্ট্রিংটিতে কমা না থাকলে এই ফাংশনটি বিভক্তকরণের পদ্ধতিটিকে ত্রুটি থেকে বাঁচিয়ে রাখবে (উপরের উদাহরণটি দেওয়া হল)।
কোরিডর্নিং

1
দ্রষ্টব্য: মূলধন পত্রের সাথে শুরু হওয়া ফাংশনগুলি হ'ল বেশিরভাগ সময় ডাকে ডিজাইন করার জন্য। প্রার্থনা করার জন্য ডিজাইন করা হয়নি এমন ফাংশনে লোয়ার কেস লেটার ব্যবহার করা ভাল best
জাস্টারম্যান

এটি আমার পক্ষে ব্যর্থ হয়েছিল যখন আমার কমা ছাড়া কোনও মূল্য ছিল। else { ResultArray = [CommaSepStr]; }দ্বিতীয়টির পরে যুক্ত হয়েছেif
টমাস বাই

ধন্যবাদ যোগ হয়েছে। এটা।
বিজে প্যাটেল

8

ফাংশন রিটার্ন

var array = (new Function("return [" + str+ "];")());

এটি স্ট্রিং এবং অবজেক্টসিংস গ্রহণ করে

var string = "0,1";

var objectstring = '{Name:"Tshirt", CatGroupName:"Clothes", Gender:"male-female"}, {Name:"Dress", CatGroupName:"Clothes", Gender:"female"}, {Name:"Belt", CatGroupName:"Leather", Gender:"child"}';

var stringArray = (new Function("return [" + string+ "];")());

var objectStringArray = (new Function("return [" + objectstring+ "];")());

জেএসফিডাল https://jsfiddle.net/7ne9L4Lj/1/


3
পাঠ্য স্ট্রিংয়ের ত্রুটি রয়েছে - সিনট্যাক্স এরির: অপ্রত্যাশিত শনাক্তকারী সংখ্যার স্ট্রিং ঠিক আছে। যেমন। var stringtext = "String, text, I, am"; var stringtextArray = (new Function("return [" + string text + "];")()); ফলাফলটি:
সিনট্যাক্স এরিয়ার

7

আমি জানি এই প্রশ্নের উত্তর বেশ কিছু সময়ের জন্য দেওয়া হয়েছে, তবে আমি ভেবেছিলাম যে এই অবদানটি অন্যদের জন্য আমার অবদানের পক্ষে উপকারী হবে ...

এখানে একটি ফাংশন যা একটি স্ট্রিংকে অ্যারেতে রূপান্তর করবে, এমনকি তালিকায় কেবলমাত্র একটি আইটেম থাকলেও (কোনও বিভাজক চরিত্র নেই):

function listToAray(fullString, separator) {
  var fullArray = [];

  if (fullString !== undefined) {
    if (fullString.indexOf(separator) == -1) {
      fullAray.push(fullString);
    } else {
      fullArray = fullString.split(separator);
    }
  }

  return fullArray;
}

এটি এর মতো ব্যবহার করুন:

var myString = 'alpha,bravo,charlie,delta';
var myArray = listToArray(myString, ',');
myArray[2]; // charlie

var yourString = 'echo';
var yourArray = listToArray(yourString, ',');
yourArray[0]; // echo

আমি এই ফাংশনটি তৈরি করেছি কারণ splitস্ট্রিংয়ের ক্ষেত্রে পৃথককারী চরিত্র না থাকলে একটি ত্রুটি ফেলে দেয় (কেবলমাত্র একটি আইটেম)


3
বিভাজকটি পাওয়া না গেলে কোনও ত্রুটি নিক্ষেপ করা হয় না: 'echo'.split(',')ফিরে আসে ['echo']এবং ''.split(',') ফিরে আসে ['']। আপনি হবে কোনও ত্রুটির সম্মুখীন হলে আপনাকে কল x.split(',')যখন x(তত্সহ যখন একটি স্ট্রিং নয় xহয় অনির্দিষ্ট বা নাল ,) কোন না থাকায় splitফাংশন অন্যান্য ধরনের জন্য উপলব্ধ।
জোয়েল লি

আহ, আমি দেখতে পাচ্ছি যে আমি splitযখন আমার তালিকাটিআর্য ফাংশনটি লিখেছিলাম তখন আমি কোনও অপরিজ্ঞাত অবজেক্টের জন্য ব্যবহার করার চেষ্টা করছিলাম। এটি নির্দেশ করার জন্য ধন্যবাদ ...
কাব 5

6

আমার একটি অনুরূপ সমস্যা ছিল, তবে আরও জটিল যেহেতু আমার কোনও সিএসভিকে অ্যারের অ্যারে রূপান্তরিত করার প্রয়োজন হয়েছিল (প্রতিটি লাইনটি একটি অ্যারের উপাদান যা ভিতরে কমা দ্বারা বিভক্ত আইটেমের অ্যারে থাকে)।

সবচেয়ে সহজ সমাধান (এবং আমি আরও নিরাপদ বলেছি) পাপাপার্স ( http://papaparse.com/ ) ব্যবহার করা ছিল যার একটি "নো-শিরোনাম" বিকল্প রয়েছে যা সিএসভিকে অ্যারেগুলিতে অ্যারে রূপান্তরিত করে, এটি স্বয়ংক্রিয়ভাবে " , "আমার সীমানা হিসাবে।

এছাড়াও, এটি বোভারে নিবন্ধীকৃত, সুতরাং আমার কেবলমাত্র এটি করতে হয়েছিল:

bower install papa-parse --save

এবং তারপরে এটি আমার কোডটিতে নীচে ব্যবহার করুন:

var arrayOfArrays = Papa.parse(csvStringWithEnters), {header:false}).data;

আমি সত্যি এটি পছন্দ করেছি.


5
let str = "January,February,March,April,May,June,July,August,September,October,November,December"

let arr = str.split(',');

ফলাফল হবে:

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

এবং আপনি যদি নিম্নলিখিতগুলিতে রূপান্তর করতে চান:

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

এই:

"January,February,March,April,May,June,July,August,September,October,November,December";

ব্যবহার করুন:

str = arr.join(',')

3

তার জন্য ভাল সমাধান

let obj = ['A','B','C']

obj.map((c) => { return c. }).join(', ')


1

আপনি নিম্নলিখিত স্নিপেট চেষ্টা করতে পারেন

 var str = "How,are,you,doing,today?";
    var res = str.split(",");
    console.log("My Result:",res)

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