2012-10-17 16 views
13

के साथ गैर अंग्रेजी अक्षर तुलना करने के लिए 2 तार जो उन्हेंकैसे लहजे

String1 = debarquer 
String2 = débárquér 

में कुछ गैर अंग्रेजी चरित्र है 2 तार ऊपर की तुलना पर की तुलना करना चाहते हैं, वे बराबर कहना चाहिए।

+0

इसमें गैर-असीसी मान शामिल हैं। आपको 's1.equals (s2)' का उपयोग करके उनकी तुलना करनी चाहिए, मान लीजिए कि दोनों 'स्ट्रिंग' हैं और उनके पास 'शून्य' मान नहीं है। –

+0

'अगर (स्ट्रिंग 1.equals (स्ट्रिंग 2)) {/ * कुछ करें * /}' –

उत्तर

0
//add null check for string1 
if(string1.equals(string2)){ 
    //print/return equals 
} else{ 
    //print/return not equal 
} 
-1
if (string1 != null){ 
if (string1.equals(string2)){ 
System.out.println("Equal"); 
} 
else{ 
System.out.println("Not Equal"); 
} 
22

उपयोग कोलेटर वर्ग। यह आपको एक ताकत और लोकेल सेट करने की अनुमति देता है और यह पात्रों की तुलना उचित रूप से करेगा।

यह इस करने के लिए कुछ इसी तरह होना चाहिए (नोट: कार्यक्रम मैं परीक्षण नहीं किया)

import java.text.Collator; 
import java.util.Locale; 

public class CollatorExp { 

    public static void main(String[] args) { 
     Collator collator = Collator.getInstance(Locale.FRENCH); 
     collator.setStrength(Collator.PRIMARY); 

     if (collator.compare("débárquér", "debarquer") == 0) { 
      System.out.println("Both Strings are equal"); 
     } else { 
      System.out.println("Both Strings are not equal"); 
     } 
    } 
} 

अद्यतन: एक नोट करने के लिए मुद्दा यह है कि "débárquér" और "debarquer" के रूप में कभी नहीं माना जाना चाहिए है बराबरी का। लेकिन अगर आप उन्हें हल कर देंगे, तो आप नहीं चाहते हैं कि उनकी तुलना उनके ASCII मूल्य के आधार पर की जाए। उदाहरण के लिए "जोओओ" और "जोआओ" लें: यदि आप उन्हें एएससीआईआई के आधार पर हल करते हैं, तो आप जोओओ, जॉन, जोओओ प्राप्त कर सकते हैं। यह स्पष्ट रूप से अच्छा नहीं है। कोलेटर वर्ग का उपयोग करके इसे सही तरीके से संभालता है।

+0

आप कोड पोस्ट क्यों करते हैं जिसका आपने परीक्षण नहीं किया है? –

+0

मैं 'बराबर' विधि का उपयोग करके स्पैनिश में 'स्ट्रिंग की तुलना करना चाहता हूं और इसमें कोई समस्या नहीं है। क्या बड़ा अंतर होगा? –

-3

जावा में 2 स्ट्रिंग मानों की तुलना करने का एक तरीका है।

 if(String1.equals(String2)) 
     { 
      System.out.println("Equal"); 
     } 
     else 
     { 
      System.out.println("Not equal"); 
     } 
11

ऐसा करने के लिए आप जावा की Normalizer कक्षा का उपयोग कर सकते हैं। बस स्ट्रिंग्स को सामान्य, तो विशेषक के निशान को निकाल देते हैं, तो जैसे:

String stripAccents(String string) { 
    string = Normalizer.normalize(string, Normalizer.Form.NFD); 
    string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); 
} 

फिर आप इस का उपयोग कर सकते दो तार शून्य से लहजे तुलना करने के लिए: चिंता मत करो अगर आपके `स्ट्रिंग

stripAccents(string1).equals(stripAccents(string2)) 
संबंधित मुद्दे