Есть ли эквивалентная функция wcwidth() в Go?
Функция POSIX wcwidth()
вычисляет ширину заданного wchar_t
при печати на терминале. Например, wcwidth(L'A')
возвращается 1
, wcwidth(L'字')
возвращается 2
и т. д. Также есть функция wcswidth()
который вычисляет ширину всей строки - это полезно, если присутствуют объединяющие акценты.
Существует ли подобная функция в стандартной библиотеке Go или дополнительных библиотеках? Если нет, то есть ли простой способ сделать что-то достаточно похожее?
1 ответ
Решение
Существует ли подобная функция в стандартной библиотеке Go или дополнительных библиотеках?
Я считаю, что самая популярная библиотека для этого - go-runewidth.
Пример:
package main
import (
"github.com/mattn/go-runewidth"
)
func main() {
println(runewidth.StringWidth("A")) // prints 1
println(runewidth.StringWidth("字")) // prints 2
}