তাদের বর্ণমালা অনুসারে স্ট্রিং তুলনা


101
String s1 = "Project";
String s2 = "Sunject";

আমি উপরের দুটি স্ট্রিংকে তাদের বর্ণমালা অনুসারে তুলনা করতে চাই (যা এই ক্ষেত্রে "প্রকল্প" তারপরে "সানজেক্ট" "পি" হিসাবে "এস" এর আগে আসে)। কেউ জাভাতে কীভাবে তা করতে জানেন?

উত্তর:


121

String.compareTo আপনার প্রয়োজন হতে পারে বা নাও হতে পারে।

আপনার যদি স্থানীয়ভাবে স্ট্রিংয়ের ক্রম প্রয়োজন হয় তবে এই লিঙ্কটি একবার দেখুন ।


8
নোট করুন যে String#compareToলিক্সোগ্রাফিক তুলনা ছোট "কে" এর আগে মূলধন "জেড" বাছাই করে। আপনি যদি মিশ্র-কেস স্ট্রিংগুলিকে বর্ণমালা করছেন তবে আপনার লোকাল-সংবেদনশীল ক্রম দরকার। স্থানীয়ভাবে স্ট্রিংয়ের অর্ডিংয়ের লিঙ্কটি যদি মারা যায় তবে ব্যবহার করার জিনিসটি java.text . Collator
ডিউলিন চিহ্নিতকারী

41
আপনিও ব্যবহার করতে পারেনString#compareToIgnoreCase
ডরি

1
এছাড়াও আপনি accentued চিঠি দেখুন সঙ্গে মোকাবেলা করতে হবে stackoverflow.com/a/12927962/2087666
Rémi Morin

94

String.compareToপদ্ধতিটি একবার দেখুন ।

s1.compareTo(s2)

জাভাডোকস থেকে:

ফলাফলটি একটি নেতিবাচক পূর্ণসংখ্যা হয় যদি এই স্ট্রিং অবজেক্টটি অভিধানিকভাবে আর্গুমেন্টের স্ট্রিংয়ের আগে থাকে। ফলাফলটি ইতিবাচক পূর্ণসংখ্যা হয় যদি এই স্ট্রিং অবজেক্টটি ডিক্সিকোগ্রাফিকভাবে আর্গুমেন্টের স্ট্রিং অনুসরণ করে। স্ট্রিংগুলি সমান হলে ফলাফল শূন্য হয়; যখন সমান (অবজেক্ট) পদ্ধতিটি সত্য হয় ঠিক তখন তুলনাTo 0 প্রদান করে।


33
String a = "..."; 
String b = "...";  

int compare = a.compareTo(b);  

if (compare < 0) {  
    //a is smaller
}
else if (compare > 0) {
    //a is larger 
}
else {  
    //a is equal to b
} 

7

আপনি স্ট্রিংয়ের তুলনামূলক পদ্ধতিতে (java.lang.String.compareTo) কল করতে পারেন। এই বৈশিষ্ট্যটি জাভা ডকুমেন্টেশন সাইটে ভালভাবে নথিভুক্ত করা হয়েছে

এখানে একটি সংক্ষিপ্ত প্রোগ্রাম যা এটি দেখায়:

class StringCompareExample {
    public static void main(String args[]){
        String s1 = "Project"; String s2 = "Sunject";
        verboseCompare(s1, s2);
        verboseCompare(s2, s1);
        verboseCompare(s1, s1);
    }

    public static void verboseCompare(String s1, String s2){
        System.out.println("Comparing \"" + s1 + "\" to \"" + s2 + "\"...");

        int comparisonResult = s1.compareTo(s2);
        System.out.println("The result of the comparison was " + comparisonResult);

        System.out.print("This means that \"" + s1 + "\" ");
        if(comparisonResult < 0){
            System.out.println("lexicographically precedes \"" + s2 + "\".");
        }else if(comparisonResult > 0){
            System.out.println("lexicographically follows \"" + s2 + "\".");
        }else{
            System.out.println("equals \"" + s2 + "\".");
        }
        System.out.println();
    }
}

এখানে এটি সরাসরি দেখায় যা এটি কাজ করে: http://ideone.com / ড্রিক 3


6

জাতীয়করণের পরে বর্ণানুক্রমিক ক্রমের জন্য, ব্যবহার করুন Collator

//Get the Collator for US English and set its strength to PRIMARY
Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
if( usCollator.compare("abc", "ABC") == 0 ) {
    System.out.println("Strings are equivalent");
}

সমর্থিত লোকেলের তালিকার জন্য, জেডিকে 8 এবং জেআরই 8 সমর্থিত লোকেলগুলি দেখুন ।


1
import java.io.*;
import java.util.*;
public class CandidateCode {
    public static void main(String args[] ) throws Exception {
       Scanner sc = new Scanner(System.in);
           int n =Integer.parseInt(sc.nextLine());
           String arr[] = new String[n];
        for (int i = 0; i < arr.length; i++) {
                arr[i] = sc.nextLine();
                }


         for(int i = 0; i <arr.length; ++i) {
            for (int j = i + 1; j <arr.length; ++j) {
                if (arr[i].compareTo(arr[j]) > 0) {
                    String temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for(int i = 0; i <arr.length; i++) {
            System.out.println(arr[i]);
        }
   }
}

0

অন্যরা যেমন পরামর্শ দিয়েছে, আপনি ব্যবহার করতে পারেন String.compareTo(String)

তবে আপনি যদি স্ট্রিংগুলির একটি তালিকা বাছাই করে থাকেন এবং আপনার যদি একটি প্রয়োজন হয় তবে Comparatorআপনাকে এটি প্রয়োগ করতে হবে না, আপনি ব্যবহার করতে পারেন Comparator.naturalOrder()বা Comparator.reverseOrder()

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