ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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뿐만 아니라 전 언어에서 사용이 가능함 (물론 형태는 조금씩 바뀌겠지만)

    댓글