2015-01-01 1 views
2

POSIX 함수 wcwidth()은 터미널에 인쇄 할 때 주어진 wchar_t의 너비를 계산합니다. 예를 들어 wcwidth(L'A')1, wcwidth(L'字')2을 반환합니다. 전체 문자열의 너비를 계산하는 wcswidth() 함수도 있습니다. 이는 액센트가있는 경우에 유용합니다.Go에 wcwidth() 함수와 동일한 기능이 있습니까?

유사한 기능이 Go 표준 라이브러리 또는 보조 라이브러리에 있습니까? 그렇지 않다면, 충분히 비슷한 것을 만들 수있는 쉬운 방법이 있습니까?

+1

하는 당신은 또한 ['golang.org/x/text/width'](https://godoc.org/golang.org/x/text/width에 관심이있을 수 있습니다) 패키지는 [프로젝트의 하위 저장소로 이동] (https://golang.org/pkg/#subrepo)의 일부입니다. 또한 관련 Go 프로젝트 [블로그 기사] (https://blog.golang.org/normalization)도 있습니다. –

+0

@DaveC 아! 그것은 새 것이어야합니다. 어쩌면 그 패키지의 존재는 내가이 기능들이 없다는 것에 대해 제기 한 버그의 결과일까요? – fuz

+0

그러나 동일한 기능을 제공한다고 생각하지는 않습니다. 관련성이 있으므로 관심을 가질 수 있습니다. –

답변

6

비슷한 기능이 Go 표준 라이브러리 또는 보조 라이브러리에 있습니까?

가장 많이 사용되는 라이브러리는 go-runewidth입니다.

예 :

package main 

import (
    "github.com/mattn/go-runewidth" 
) 

func main() { 
    println(runewidth.StringWidth("A")) // prints 1 
    println(runewidth.StringWidth("字")) // prints 2 
} 
+0

방대한 테스트를 거친 후이 라이브러리가 필요한 것을 수행하는지 확인할 수 있습니다. 고맙습니다! – fuz