স্থান দ্বারা একটি স্ট্রিং বিভক্ত কিভাবে


329

আমার স্ট্রিংকে ফাঁক দিয়ে বিভক্ত করতে হবে। এর জন্য আমি চেষ্টা করেছি:

str = "Hello I'm your String";
String[] splited = str.split(" ");

তবে কাজ হচ্ছে বলে মনে হচ্ছে না।


3
দেখতে সুন্দর ... 'বিভক্ত' অ্যারেতে মানগুলি কী?
npinti

1
আপনার কোড প্রকৃতপক্ষে যেমন হয় তেমন কাজ করে। আইডিয়নে ডটকমে লাইভ রান চালান দেখুন ।
বাসিল বাউরক

@ বাসিলবার্ক - আমি এই লিঙ্কটিতে কোনও রান বোতাম খুঁজে পাইনি
ন্যানোসফট

1
@ ন্যানোসফট আইডিয়নে ডটকমের পৃষ্ঠাটি লোড হওয়ার পরে স্বয়ংক্রিয়ভাবে চলে। স্টডআউট বিভাগে কোডের নীচে আউটপুট দেখুন । কোডটি পরিবর্তন করতে, forkউপরে বাম কোণার নিকটবর্তী লিঙ্কটি ক্লিক করুন ।
বাসিল বার্ক

উত্তর:


639

আপনার যা আছে তা কাজ করা উচিত। তবে, প্রদত্ত স্পেসগুলি যদি ডিফল্ট হয় ... অন্য কিছু? আপনি হোয়াইটস্পেস রেজেক্স ব্যবহার করতে পারেন:

str = "Hello I'm your String";
String[] splited = str.split("\\s+");

এটি আপনার স্ট্রিংকে টোকনে বিভক্ত করার জন্য একটানা সংখ্যক টানা স্পেস তৈরি করবে।

পার্শ্ব নোট হিসাবে, আমি নিশ্চিত "বিভক্ত" একটি শব্দ নয় :) আমি বিশ্বাস করি যে বিভক্তির শিকার হওয়ার অবস্থাও "বিভাজন"। এটি ব্যাকরণের ব্যাকরণের একটি জিনিস :-) পিক হওয়ার চেষ্টা করছে না, কেবল টের পেয়েছি আমি এটিকে পাস দিয়েছি!


45
আমি সুইস আপনি কি আশা করেছিলেন, আমার ইংরেজি সেরা নয়; পি, যাইহোক এটি কাজ করেছিল!
সাফারি

29
:-) আরে এটা বড় কিছু নয়। আমি কিছু হাস্যকর পরিবর্তনশীল নাম ব্যবহার করেছি (কোডে আমার সম্ভবত বাঁচতে দেওয়া উচিত হয়নি!) আমি ব্যাকরণ নাজী বা অন্য কিছু হওয়ার চেষ্টা করছিলাম না, কেবল কিছুটা ট্রিভিয়ায় যাচ্ছিলাম, এটাই সব।
corsiKa

7
সাফারি, আপনি মাত্র ১ টি দামের জন্য 2 টি দুর্দান্ত পরামর্শ পেয়েছেন just দুর্দান্ত উত্তর।
নির্মল মঙ্গল

8
"আপনার যা করা উচিত তা কাজ করা উচিত" আমার কোডটি ভেঙে যাওয়ার সময় আমি প্রায় একই রকম কথা বলি।
গ্রিফিন

1
আমার ব্যবহারের কেসটি স্ট্রিংকে বিভক্ত করা এবং একাধিক স্পেস সরিয়ে দেওয়ার কারণে আমি এটি দরকারী বলে মনে করি। কোডের একটি লাইন আমার জন্য উভয়ই করে।
নীহারিকা উপাধ্যায়

86

গৃহীত উত্তরটি ভাল হওয়ার সময়, সচেতন থাকুন যে যদি আপনার ইনপুট স্ট্রিংটি কোনও সাদা স্থান দিয়ে শুরু হয় তবে আপনি একটি শীর্ষস্থানীয় খালি স্ট্রিংয়ের সাথে শেষ করবেন। উদাহরণস্বরূপ, এর সাথে:

String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");

ফলাফলটি হবে:

splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";

সুতরাং আপনি আপনার স্ট্রিংটি বিভক্ত করার আগে ছাঁটাতে চান:

String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");

29

আমি বিশ্বাস করি যে str.split বন্ধনীগুলিতে নিয়মিত প্রকাশ করা সমস্যার সমাধান হওয়া উচিত। জাভা স্ট্রিং.স্প্লিট () পদ্ধতি নিয়মিত প্রকাশের উপর ভিত্তি করে তাই আপনার যা প্রয়োজন তা হ'ল:

str = "Hello I'm your String";
String[] splitStr = str.split("\\s+");

12

Stringutils.split()সাদা গতিতে স্ট্রিংকে বিভক্ত করতে ব্যবহার করুন । উদাহরণস্বরূপ StringUtils.split("Hello World")"হ্যালো" এবং "ওয়ার্ল্ড" প্রদান;

উল্লিখিত কেসটি সমাধান করার জন্য আমরা এই জাতীয় বিভাজন পদ্ধতি ব্যবহার করি

String split[]= StringUtils.split("Hello I'm your String");

যখন আমরা বিভক্ত অ্যারে প্রিন্ট করব আউটপুটটি হবে:

হ্যালো

আমি

তোমার

দড়ি

সম্পূর্ণ উদাহরণের জন্য এখানে ডেমো চেক করুন



6

যদি কোনওভাবে আপনি স্ট্রিং বিভক্ত পদ্ধতিটি ব্যবহার করতে না চান তবে আপনি জাভাতে স্ট্রিংটোকেনাইজার শ্রেণিটি ব্যবহার করতে পারেন ..

    StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
    String[] splited = new String[tokens.countTokens()];
    int index = 0;
    while(tokens.hasMoreTokens()){
        splited[index] = tokens.nextToken();
        ++index;
    }

অ্যারেআইন্ডেক্সআউটফাউন্ডস ব্যতিক্রম ছোঁড়ার সম্ভাবনা রয়েছে।
অজয় টাকুর

2
না, এটি "অ্যারেআইন্ডেক্সআউটফাউন্ডস" ফেলে দেবে না কারণ স্ট্রিংয়ে পাওয়া টোকেনের সংখ্যা অনুসারে আমি অ্যারের আকার ঘোষণা করেছি। এটি নিশ্চিত করবে যে অ্যারেগুলির আকার কোনও স্ট্রিংয়ের প্রাপ্ত টোকেনের চেয়ে বেশি হবে না।
মুহাম্মদ সুলেমান

6

আর একবার চেষ্টা কর

    String str = "This is String";
    String[] splited = str.split("\\s+");

    String split_one=splited[0];
    String split_second=splited[1];
    String split_three=splited[2];

   Log.d("Splited String ", "Splited String" + split_one+split_second+split_three);

4

বিকল্প উপায় হ'ল:

import java.util.regex.Pattern;

...

private static final Pattern SPACE = Pattern.compile(" ");
String[] arr = SPACE.split(str); // str is the string to be split

এটা এখানে দেখেছি


3

ঠিক আছে, সুতরাং আপনার ইতিমধ্যে উত্তরটি পেয়েছি কারণ আমি এটিকে সাধারণীকরণ করব we

আপনি যদি কোনও স্ট্রিং ফাঁক দিয়ে বিভক্ত করতে চান তবে ডিলিমিটার (বিশেষ অক্ষর)।

প্রথমে নেতৃস্থানীয় স্থানটি সরান কারণ তারা বেশিরভাগ সমস্যা তৈরি করে।

str1 = "    Hello I'm your       String    ";
str2 = "    Are you serious about this question_  boy, aren't you?   ";

প্রথমে স্থান, ট্যাব ইত্যাদি হতে পারে এমন শীর্ষস্থানীয় স্থান সরিয়ে ফেলুন

String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more

এখন আপনি যদি স্থান বা কোনও বিশেষ চরের দ্বারা বিভক্ত করতে চান।

String[] sa = s.split("[^\\w]+");//split by any non word char

তবে w যেমন [a-zA-Z_0-9] ধারণ করে, তাই আপনি যদি আন্ডারস্কোর দ্বারা বিভক্ত করতে চান (_) এছাড়াও ব্যবহার করুন

 String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space

এটা replaceAll("^\\s+","")আমার দিন বাঁচিয়েছে। এটা আমার মামলার পক্ষে কাজ করেছে। ধন্যবাদ
কোস্টাস আসারজিওটাকিস

2

নীচে খুব সাধারণ উদাহরণ:

আশা করি এটা সাহায্য করবে.

String str = "Hello I'm your String";
String[] splited = str.split(" ");
var splited = str.split(" ");
var splited1=splited[0]; //Hello
var splited2=splited[1]; //I'm
var splited3=splited[2]; //your
var splited4=splited[3]; //String


0

এখানে স্ট্রিংকে ট্রিম করার একটি পদ্ধতি যাতে "," বা সাদা স্থান রয়েছে

private String shorterName(String s){
        String[] sArr = s.split("\\,|\\s+");
        String output = sArr[0];

        return output;
    }

0

যেহেতু এই উত্তরগুলি পোস্ট হওয়ার পরে অনেক সময় হয়ে গেছে, তাই যা জিজ্ঞাসা করা হয়েছে তা করার জন্য এখানে আরও একটি আরও বর্তমান উপায়:

List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
    while (sc.hasNext()) output.add(sc.next());
}

এখন আপনার কাছে স্ট্রিংগুলির একটি তালিকা রয়েছে (যা তাত্ক্ষণিকভাবে অ্যারের চেয়ে ভাল); আপনার যদি অ্যারের দরকার হয় তবে আপনি এটি করতে পারেনoutput.toArray(new String[0]);


0

কেবল সাদা স্থান নয়, তবে আমার সমাধানটি অদৃশ্য চরিত্রগুলিকেও সমাধান করে।

str = "Hello I'm your String";
String[] splited = str.split("\p{Z}");

-1

স্পেস বাই স্পাই স্ট্রিং স্পেস

    String CurrentString = "First Second Last";
    String[] separated = CurrentString.split(" ");

    for (int i = 0; i < separated.length; i++) {

         if (i == 0) {
             Log.d("FName ** ", "" + separated[0].trim() + "\n ");
         } else if (i == 1) {
             Log.d("MName ** ", "" + separated[1].trim() + "\n ");
         } else if (i == 2) {
             Log.d("LName ** ", "" + separated[2].trim());
         }
     }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.