有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

韩语字符的java排序和分组(不熟悉韩语)

我正在尝试用Java对韩语字符进行排序和分组

目前,我将使用

final Collator collator = Collator.getInstance(Locale.KOREA);
    Collections.sort(words, collator);

然而,我很难把它们分成元音组(ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ)


共 (1) 个答案

  1. # 1 楼答案

    这应该不会太难,尽管我不确定以前是否已经这样做过

    你要做的是取下第一个Unicode字母。在Unicode中,所有的韩语字母都是按照维基百科http://en.wikipedia.org/wiki/Korean_language_and_computers#Example中很好地描述的公式组成的

    所以你可以用一个公式来分解它:

    (int)((54620 - 44032) / 588)
    

    使用wikipedia文章中提到的密钥,您可以做类似的事情(我使用Groovy,因为它更简单,但我相信您可以将其应用于Java)

    def words = ['곰', '세', '마리','가', '한', '집에', '있어', '아빠', '곰', '엄마', '곰', '애기', '곰'], 
    result = [('ㄱ'):[],
    ('ㄲ'):[],
    ('ㄴ'):[],
    ('ㄷ'):[],
    ('ㄸ'):[],
    ('ㄹ'):[],
    ('ㅁ'):[],
    ('ㅂ'):[],
    ('ㅃ'):[],
    ('ㅅ'):[],
    ('ㅆ'):[],
    ('ㅇ'):[],
    ('ㅈ'):[],
    ('ㅉ'):[],
    ('ㅊ'):[],
    ('ㅋ'):[],
    ('ㅌ'):[],
    ('ㅍ'):[],
    ('ㅎ'):[]], matrix = [(0):'ㄱ',
    (1):'ㄲ',
    (2):'ㄴ',
    (3):'ㄷ',
    (4):'ㄸ',
    (5):'ㄹ',
    (6):'ㅁ',
    (7):'ㅂ',
    (8):'ㅃ',
    (9):'ㅅ',
    (10):'ㅆ',
    (11):'ㅇ',
    (12):'ㅈ',
    (13):'ㅉ',
    (14):'ㅊ',
    (15):'ㅋ',
    (16):'ㅌ',
    (17):'ㅍ',
    (18):'ㅎ']
    
    for (word in words) {
        def offset = (int)((word.charAt(0) - 44032) / 588)
        def firstJamo = matrix[offset]
        result[firstJamo] << word   
    }
    
    result
    

    要查看此代码的实际操作,请参阅https://groovyconsole.appspot.com/script/5767123439714304