Skip to content

Commit 6073119

Browse files
committed
Merge branch 'master' of https://github.com/Park-KwonSoo/go-pkg
2 parents 71fcd94 + 0c4d463 commit 6073119

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

pkg/hangul/main.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package hangul
2+
3+
import "bytes"
4+
5+
var (
6+
hangulCHO = []string{"ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"}
7+
hangulJUN = []string{"ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ"}
8+
hangulJON = []string{"", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ"}
9+
)
10+
11+
const (
12+
hangulBASE = rune('가') //첫번째 글자
13+
hangulEND = rune('힣') //마지막 글자
14+
15+
hangulJA = rune('ㄱ') //자음
16+
hangulMO = rune('ㅏ') //모음
17+
)
18+
19+
/*
20+
* Dev By Kyle
21+
* 한글 문자열을 초성 문자열로 변환시킨다.
22+
*/
23+
func GetCHO(h string) string {
24+
//한글문자열의 길이
25+
var b bytes.Buffer
26+
for _, char := range []rune(h) {
27+
if char >= hangulBASE && char <= hangulEND {
28+
temp := char - hangulBASE
29+
b.WriteString(hangulCHO[temp/588])
30+
} else {
31+
//한글이 아니라면 그냥 쓰게 된다.
32+
b.WriteString(string(char))
33+
}
34+
}
35+
36+
return b.String()
37+
}

test/hangul/hangul_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package hangul_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/Park-KwonSoo/go-pkg/pkg/hangul"
8+
)
9+
10+
func TestIsChosung(t *testing.T) {
11+
rslt := hangul.GetCHO("안녕하세요")
12+
if rslt != "ㅇㄴㅎㅅㅇ" {
13+
t.Errorf(fmt.Sprintf("It's not string's chosung: %s", rslt))
14+
}
15+
16+
rslt = hangul.GetCHO("사과")
17+
if rslt != "ㅅㄱ" {
18+
t.Errorf(fmt.Sprintf("It's not string's chosung: %s", rslt))
19+
}
20+
21+
rslt = hangul.GetCHO("상자, 갑")
22+
if rslt != "ㅅㅈ, ㄱ" {
23+
t.Errorf(fmt.Sprintf("It's not string's chosung: %s", rslt))
24+
}
25+
}

0 commit comments

Comments
 (0)