Есть ли эквивалентная функция 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
}
Другие вопросы по тегам