chúng tôi chấp nhận tất cả các loại ký tự quốc gia trong chuỗi UTF-8 trên đầu vào và chúng tôi cần chuyển đổi chúng thành chuỗi ASCII trên đầu ra cho một số mục đích sử dụng cũ. (Chúng tôi không chấp nhận ký tự Trung Quốc và Nhật Bản, chỉ có ngôn ngữ châu Âu)Chuyển đổi UTF-8 sang ASCII với các bổ sung
Chúng tôi đã một tiện ích nhỏ để thoát khỏi tất cả các dấu:
public static final String toBaseCharacters(final String sText) {
if (sText == null || sText.length() == 0)
return sText;
final char[] chars = sText.toCharArray();
final int iSize = chars.length;
final StringBuilder sb = new StringBuilder(iSize);
for (int i = 0; i < iSize; i++) {
String sLetter = new String(new char[] { chars[i] });
sLetter = Normalizer.normalize(sLetter, Normalizer.Form.NFC);
try {
byte[] bLetter = sLetter.getBytes("UTF-8");
sb.append((char) bLetter[0]);
} catch (UnsupportedEncodingException e) {
}
}
return sb.toString();
}
Câu hỏi đặt ra là làm thế nào để thay thế tất cả các s nhọn Đức (ß, Đ, đ) và các ký tự khác thông qua phương pháp chuẩn hóa ở trên, với các chất bổ sung (trong trường hợp ß, bổ sung có thể là "ss" và trong trường hợp bổ sung od Đ sẽ là "D" hoặc "Dj").
Có cách nào đơn giản để làm điều đó, mà không có hàng triệu .replaceAll() gọi?
Ví dụ: Đonardan = Djonardan, Blaß = Blass, v.v.
Chúng tôi có thể thay thế tất cả các ký tự "có vấn đề" bằng khoảng trống, nhưng muốn tránh điều này để làm cho đầu ra tương tự như đầu vào càng tốt.
Cảm ơn bạn đã trả lời của bạn,
Bozo
Lưu ý rằng không có bản đồ duy nhất: Trong tiếng Đức, "ö" được thay thế bởi "oe", trong khi bằng tiếng Thụy Điển, "ö" được thay thế bằng "o". – Heinzi
Bạn sẽ cần phải có chức năng này trong một tham số ngôn ngữ và có thể có một ngôn ngữ mặc định. Hoặc dành thời gian cố gắng tìm ra cách quyết định chuỗi ngôn ngữ nào sẽ đến, nhưng điều đó sẽ phanh nếu chuỗi không đủ dài. một trong hai cách, có vẻ như bạn sẽ cần một cái nhìn lên bảng của một số loại. Hãy để ứng dụng của bạn đi qua toàn bộ chuỗi, kiểm tra từng ký tự và tìm kiếm những gì nó cần được đổi chỗ. – thecoshman
Một tùy chọn khác có thể thay thế "ö" bằng "o:" như một loại "dấu phụ của người nghèo". –