빵공장
한글 자모 분리기 만들어 보기 본문
한글에 사용하는 글자들 변수 미리 만들어 놓기
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package koreanutil
var BASECODE rune = '\uAC00'
//CHO 초성
var CHO = []string{"ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"}
// JUNG 중성
var JUNG = []string{"ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ"}
// JONG 종성
var JONG = []string{"", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"}
|
cs |
자모를 반환하는 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
package koreanutil
import (
"regexp"
)
// GetJamo 문장을 입력받아 자모 단위로 분리하여 반환
// 한글이 아닌 문자는 그대로 반환
func GetJamo(userInput string) [][]string {
runeUserInput := []rune(userInput)
var result [][]string
ptnKorean := regexp.MustCompile(`[가-힣]`)
for _, char := range runeUserInput {
if !ptnKorean.MatchString(string(char)) {
result = append(result, []string{string(char)})
continue
}
choIdx := (char - BASECODE) / 21 / 28
jungIdx := ((char - BASECODE) - (choIdx * 21 * 28)) / 28
jongIdx := (char - BASECODE) - (choIdx * 21 * 28) - (jungIdx * 28)
result = append(result, []string{string(CHO[(char-BASECODE)/21/28]), string(JUNG[jungIdx]), string(JONG[jongIdx])})
}
return result
}
|
cs |
사용해보기
1
2
3
4
5
6
7
8
9
10
11
12
|
package main
import (
"fmt"
"github.com/sucream/koreanutil"
)
func main() {
fmt.Println(koreanutil.GetJamo("안hi녕하세世界요"))
// [[ㅇ ㅏ ㄴ] [h] [i] [ㄴ ㅕ ㅇ] [ㅎ ㅏ ] [ㅅ ㅔ ] [世] [界] [ㅇ ㅛ ]]
}
|
cs |
'Golang' 카테고리의 다른 글
Websocket을 이용하여 간단한 채팅 만들어 보기 (0) | 2020.09.09 |
---|
Comments