{"id":40096183,"url":"https://github.com/crizin/korean-utils","last_synced_at":"2026-01-19T10:32:42.855Z","repository":{"id":246752675,"uuid":"822078245","full_name":"crizin/korean-utils","owner":"crizin","description":"A Java library that provides various utility functions for processing and manipulating Korean text","archived":false,"fork":false,"pushed_at":"2024-12-12T16:58:11.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-12T17:45:00.631Z","etag":null,"topics":["hangul","hangul-jamo","hangul-utils","java","korean","korean-language","korean-letters","korean-text-processing","korean-utils"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crizin.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-30T08:52:04.000Z","updated_at":"2024-12-12T16:58:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd127850-aa7d-40ec-9d98-dafde469c2c1","html_url":"https://github.com/crizin/korean-utils","commit_stats":null,"previous_names":["crizin/korean-utils"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/crizin/korean-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crizin%2Fkorean-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crizin%2Fkorean-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crizin%2Fkorean-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crizin%2Fkorean-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crizin","download_url":"https://codeload.github.com/crizin/korean-utils/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crizin%2Fkorean-utils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28565555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T08:53:44.001Z","status":"ssl_error","status_checked_at":"2026-01-19T08:52:40.245Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hangul","hangul-jamo","hangul-utils","java","korean","korean-language","korean-letters","korean-text-processing","korean-utils"],"created_at":"2026-01-19T10:32:42.733Z","updated_at":"2026-01-19T10:32:42.850Z","avatar_url":"https://github.com/crizin.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[영어](README.md) | [한국어](README.ko.md)\n\n# Korean Utils\n\n[![Build](https://github.com/crizin/korean-utils/actions/workflows/build.yml/badge.svg)](https://github.com/crizin/korean-utils/actions)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/274ee8e6cb014384b35cc6e4a3b82718)](https://app.codacy.com/gh/crizin/korean-utils/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n[![License: MIT](https://img.shields.io/github/license/crizin/korean-utils)](https://opensource.org/licenses/MIT)\n\nKorean Utils는 한글 텍스트를 처리하고 조작하기 위한 Java 라이브러리입니다.\n한글 음절의 분해와 조합, 한글 음절 구조를 고려한 텍스트 검색, 그리고 한글 텍스트 처리에 유용한 다양한 기능을 제공합니다.\n\n## 기능\n\n- 한글 음절의 분해 및 조합\n- 부분 일치를 지원하는 한글 텍스트 검색\n- 영문 키보드 레이아웃과 한글 키보드 레이아웃 사이의 변환\n- 한글 단어에 대한 적절한 조사 붙이기\n- 한글 텍스트에 대한 N-gram 생성\n- 한글 문자 길이를 고려한 길이 계산\n\n## 설치\n\nMaven이나 Gradle을 사용하여 프로젝트에 이 라이브러리를 포함할 수 있습니다.\n\n### Maven\n\n`pom.xml`에 아래 의존성을 추가하세요.\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.crizin\u003c/groupId\u003e\n    \u003cartifactId\u003ekorean-utils\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle\n\n`build.gradle`에 아래 의존성을 추가하세요.\n\n```groovy\nimplementation 'io.github.crizin:korean-utils:0.0.1'\n```\n\n## 사용법\n\n### KoreanCharacter\n\n`KoreanCharacter` 클래스는 단일 한글 문자를 나타내며 이를 조작하는 메서드를 제공합니다.\n\n#### 생성자\n\n```java\npublic KoreanCharacter() {\n}\n\npublic KoreanCharacter(Character character) {\n}\n\npublic KoreanCharacter(Jamo.Choseong choseong, Jamo.Jungseong jungseong, Jamo.Jongseong jongseong) {\n}\n```\n\n#### 메소드\n\n- `getCharacter()`: Unicode 문자 표현을 반환합니다.\n- `getChoseong()`: 초성을 반환합니다.\n- `getJungseong()`: 중성을 반환합니다.\n- `getJongseong()`: 종성을 반환합니다.\n- `compose(char character)`: 자모를 조합하여 새로운 KoreanCharacter를 생성합니다.\n- `decompose()`: 한글 문자를 자모로 분해합니다.\n- `include(KoreanCharacter other)`: 이 KoreanCharacter가 지정된 KoreanCharacter를 포함하는지 확인합니다.\n\n#### 예제\n\n```java\nclass KoreanCharacterTest {\n\n    @Test\n    void test() {\n        KoreanCharacter kc = new KoreanCharacter('한');\n\n        assertThat(kc.getCharacter()).isEqualTo('한');\n        assertThat(kc.getChoseong()).isEqualTo(Jamo.Choseong.ㅎ);\n        assertThat(kc.getJungseong()).isEqualTo(Jamo.Jungseong.ㅏ);\n        assertThat(kc.getJongseong()).isEqualTo(Jamo.Jongseong.ㄴ);\n        assertThat(kc.compose('ㅈ')).isEqualTo(new KoreanCharacter('핝'));\n        assertThat(kc.decompose(true, true)).containsExactly('ㅎ', 'ㅏ', 'ㄴ');\n        assertThat(kc.include(new KoreanCharacter('ㅎ'))).isTrue();\n        assertThat(KoreanCharacter.isKoreanCharacter('한')).isTrue();\n        assertThat(KoreanCharacter.convert(\"한글\")).containsExactly(\n            new KoreanCharacter('한'),\n            new KoreanCharacter('글')\n        );\n    }\n}\n```\n\n### KoreanUtils\n\n`KoreanUtils` 클래스는 한글 텍스트를 처리하기 위한 유틸리티 메서드를 제공합니다.\n\n#### 메소드\n\n- `length(CharSequence text, int koreanLength)`: 한글 문자에 지정된 길이를 적용하여 텍스트의 길이를 계산합니다.\n- `contains(CharSequence text, CharSequence queryText)`: 한글 자모 구성요소를 고려하여 텍스트에 검색 텍스트가 포함되어 있는지 확인합니다.\n- `containsKorean(CharSequence text)`: 텍스트에 한글 문자나 자모가 포함되어 있는지 확인합니다.\n- `startsWith(CharSequence text, String prefix)`: 한글 자모 구성요소를 고려하여 텍스트가 지정된 접두사로 시작하는지 확인합니다.\n- `endsWith(CharSequence text, String suffix)`: 한글 자모 구성요소를 고려하여 텍스트가 지정된 접미사로 끝나는지 확인합니다.\n- `compose(CharSequence decomposedText)`: 분해된 한글 문자열을 조합된 형태로 변환합니다.\n- `decompose(CharSequence composedText)`: 한글 문자열을 자모 구성요소로 분해합니다.\n- `convertEnglishTypedToKorean(CharSequence englishTypedText)`: 영문 키보드 레이아웃으로 입력된 텍스트를 한글로 변환합니다.\n- `convertKoreanTypedToEnglish(CharSequence koreanTypedText)`: 한글 키보드 레이아웃으로 입력된 텍스트를 영문으로 변환합니다.\n- `attachJosa(CharSequence text, Josa josa)`: 주어진 텍스트에 적절한 한글 조사를 붙입니다.\n- `ngram(CharSequence text, int length)`: 자모 분해를 기반으로 한글 텍스트의 n-gram을 생성합니다.\n\n#### 예제\n\n```java\nclass KoreanUtilsTest {\n\n    @Test\n    void test() {\n        assertThat(KoreanUtils.length(\"한글ABC\", 2)).isEqualTo(7);\n        assertThat(KoreanUtils.contains(\"한글\", \"ㅎㄱ\")).isTrue();\n        assertThat(KoreanUtils.containsKorean(\"한글\")).isTrue();\n        assertThat(KoreanUtils.startsWith(\"한글\", \"ㅎ\")).isTrue();\n        assertThat(KoreanUtils.endsWith(\"한글\", \"ㄹ\")).isTrue();\n        assertThat(KoreanUtils.compose(\"ㅎㅏㄴ\")).isEqualTo(\"한\");\n        assertThat(KoreanUtils.decompose(\"한\")).isEqualTo(\"ㅎㅏㄴ\");\n        assertThat(KoreanUtils.convertEnglishTypedToKorean(\"gks\")).isEqualTo(\"한\");\n        assertThat(KoreanUtils.convertKoreanTypedToEnglish(\"한\")).isEqualTo(\"gks\");\n        assertThat(KoreanUtils.attachJosa(\"한\", KoreanUtils.Josa.은_는)).isEqualTo(\"한은\");\n        assertThat(KoreanUtils.ngram(\"한국어\", 2))\n            .containsExactly(\"하\", \"ㅏㄴ\", \"ㄴㄱ\", \"구\", \"ㅜㄱ\", \"ㄱㅇ\", \"어\");\n    }\n}\n```\n\n## 라이선스\n\n이 프로젝트는 [MIT 라이선스](https://opensource.org/license/MIT)를 따릅니다. 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrizin%2Fkorean-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrizin%2Fkorean-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrizin%2Fkorean-utils/lists"}