বিভাজক ("|") ব্যবহার করে পাইপ প্রতীক দ্বারা একটি জাভা স্ট্রিং বিভক্ত করা


195

জাভা অফিসিয়াল ডকুমেন্টেশন বলে:

স্ট্রিং "boo:and:foo", উদাহরণস্বরূপ, এই রেগেক্স রেজাল্ট সহ নিম্নলিখিত ফলাফলগুলি প্রদান করে:

{ "boo", "and", "foo" }"

এবং এটি কাজ করার জন্য আমার এটির প্রয়োজন। তবে, আমি যদি এটি চালাই:

public static void main(String[] args){
        String test = "A|B|C||D";

        String[] result = test.split("|");

        for(String s : result){
            System.out.println(">"+s+"<");
        }
    }

এটি মুদ্রণ:

><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<

যা আমি প্রত্যাশা করব তার থেকে অনেক দূরে:

>A<
>B<
>C<
><
>D<

এটি কেন ঘটছে?


উত্তর:


423

তোমার দরকার

test.split("\\|");

splitরেগুলার এক্সপ্রেশন ব্যবহার করে এবং এ Regex | একটি metacharacter প্রতিনিধিত্বমূলক ORঅপারেটর। আপনি যে চরিত্র ব্যবহার করে এটিকে অব্যাহতি প্রয়োজন \(স্ট্রিং লেখা যেমন "\\"যেহেতু \এছাড়াও স্ট্রিং লিটারেল একটি metacharacter এবং অন্য প্রয়োজন \এটা অব্যাহতি)।

আপনি ব্যবহার করতে পারেন

test.split(Pattern.quote("|"));

এবং Pattern.quoteপ্রতিনিধিত্ব করে রেগেক্সের পালানো সংস্করণ তৈরি করুন |


17
এটি হ'ল, split()পদ্ধতিটি রেজেক্স নেয় এবং |রেগ প্রাক্তনের জন্য বিশেষ চরিত্র
জিগার জোশী

1
স্ট্যাক ওভারফ্লোতে মডারেটর হিসাবে আপনি আমার দ্বিতীয় পছন্দ। শুভকামনা.
দেশ শর্মি

33

যথাযথ পলায়ন ব্যবহার করুন: string.split("\\|")

অথবা, জাভা 5+ এ হেল্পারটি ব্যবহার করুন Pattern.quote()যা ঠিক এই উদ্দেশ্যে তৈরি করা হয়েছে:

string.split(Pattern.quote("|"))

যা নির্বিচার ইনপুট স্ট্রিংয়ের সাথে কাজ করে। যখন আপনার ব্যবহারকারীর ইনপুটটি উদ্ধৃত করতে / পলায়নের দরকার হয় তখন খুব দরকারী।


3
স্থানান্তরটি কখন সংঘটিত হবে তা নয়, তবে জাভা 8-তে একটি ব্যবহার করবে Pattern.quote()
র‌্যান্ডারস

4

এই কোডটি ব্যবহার করুন:

public static void main(String[] args) {
    String test = "A|B|C||D";

    String[] result = test.split("\\|");

    for (String s : result) {
        System.out.println(">" + s + "<");
    }
}

এই সমাধানটি ইতিমধ্যে গৃহীত উত্তরের দ্বারা নির্দেশিত। এটির পুনরাবৃত্তি করার দরকার নেই।
Pshemo

3

আপনি অ্যাপাচি লাইব্রেরি ব্যবহার করতে পারেন এবং এটি করতে পারেন:

StringUtils.split(test, "|");

1

আপনি ব্যবহার করতে পারেন .split("[|]")

(আমি এটির পরিবর্তে এটি ব্যবহার করেছি .split("\\|"), যা আমার পক্ষে কার্যকর হয়নি))


উভয় সংস্করণ ভাল কাজ করা উচিত। যদি এটির পরামর্শ না দেয় তবে সমস্যাটি অন্য কোথাও রয়েছে।
Pshemo

@ স্পেমো এটি একটি আকর্ষণীয় গন্ধ যুক্ত করে, কিছু বন্ধকী চিহ্নগুলি যদি বন্ধনীগুলির ভিতরে রাখে তবে এড়াতে হবে না।
প্যাক্স ভোবিস্কাম

0
test.split("\\|",999);

একটি সীমা বা সর্বোচ্চ নির্দিষ্টকরণ যেমন উদাহরণগুলির জন্য সঠিক হবে : "বু || বা "|||"

তবে test.split("\\|");একই উদাহরণগুলির জন্য বিভিন্ন দৈর্ঘ্যের স্ট্রিং অ্যারে ফিরিয়ে দেবে।

ব্যবহার রেফারেন্স: লিঙ্ক


-2

বিভাজন () পদ্ধতিটি একটি আর্গুমেন্ট হিসাবে নিয়মিত প্রকাশ করে

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