-
[Golang] 전각문자(double byte)를 반각문자(single byte)로 변경언어/Golang 2016. 10. 12. 13:41
//전각문자(특수문자 등)과 같은 기호들을 일반 문자(반각문자)로 변경
func convertHalfwidth(str string) string {
b := []byte(str)
idx := 0
var buffer bytes.Buffer
dataLength := utf8.RuneCountInString(str)
for i := 0; i < dataLength; i++ {
val, size := utf8.DecodeRune(b[idx:])
//문자가 전각문자일 경우 아래만큼 뺴서 실행
//전각문자와 반각문자는 아스키코드로 120만큼 차이나며 16진수로는 80만큼 차이가
if val >= 0xfee0 {
val = val - 0xfee0
//특수기호 공백은 아래와 같이 다른 코드값을 가지므로 하드코딩
} else if val == 0x3000 {
val = 0x20
}
idx += size
buffer.WriteString(string(val))
}
return strings.ToUpper(strings.TrimSpace(buffer.String()))
}위 기본 코드는 GO뿐만 아니라 전 언어에서 사용이 가능함 (물론 형태는 조금씩 바뀌겠지만)