2012-10-17 36 views
13

tôi muốn so sánh 2 chuỗi đó có một số nhân vật phi tiếng Anh tại chúngLàm thế nào để so sánh ký tự không phải tiếng Anh với điểm nhấn

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

On so sánh trên 2 dây, họ nên nói như nhau.

+0

Đừng lo lắng nếu 'bạn Chuỗi 'chứa các giá trị không phải ascii trong đó. Bạn nên so sánh chúng bằng cách sử dụng 's1.equals (s2)', giả sử cả hai là 'String' và không có giá trị 'null'. –

+0

'if (String1.equals (String2)) {/ * làm điều gì đó * /}' –

Trả lời

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

Sử dụng lớp collator. Nó cho phép bạn thiết lập một sức mạnh và ngôn ngữ và nó sẽ so sánh các nhân vật một cách thích hợp.

Nó phải là một cái gì đó tương tự như sau (Chú ý: Tôi đã không kiểm tra các chương trình)

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"); 
     } 
    } 
} 

UPDATE: Một điểm cần lưu ý là "débárquér" và "debarquer" không bao giờ được coi là công bằng. Nhưng nếu bạn sắp xếp chúng ra thì bạn không muốn chúng được so sánh dựa trên giá trị ASCII của chúng. Lấy ví dụ "Joao" và "João": Nếu bạn phân loại chúng dựa trên ASCII, bạn có thể nhận được Joao, John, João. Điều này rõ ràng là không tốt. Sử dụng lớp collator xử lý chính xác điều này.

+0

Tại sao bạn đăng mã mà bạn chưa thử nghiệm? –

+0

Tôi có xu hướng so sánh 'Chuỗi' giống như trong tiếng Tây Ban Nha bằng cách sử dụng phương thức 'equals' và không có vấn đề gì. Điều gì sẽ là sự khác biệt lớn? –

-3

Có cách so sánh 2 giá trị chuỗi trong java.

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

Để làm điều này bạn có thể sử dụng lớp Normalizer Java. Chỉ cần bình thường hóa các Strings, sau đó loại bỏ các dấu phụ, như vậy:

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

Sau đó bạn có thể sử dụng để so sánh hai chuỗi trừ đi điểm nhấn:

stripAccents(string1).equals(stripAccents(string2)) 
Các vấn đề liên quan