第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正確獲取中文字符串的寬度

正確獲取中文字符串的寬度

Go
躍然一笑 2022-10-04 20:00:48
我想在文本周圍做一個邊框,但我無法得到它的實(shí)際寬度。對于英文文本,它確實(shí)可以完美地工作。這是一個測試這是我的分析:len告訴我這個:這是一個測試 18aaaaaaaaa 10つのだ☆HIRO 16aaaaaaaaaa 10符文。弦寬度告訴我這個:這是一個測試 12aaaaaaaaa 10つのだ☆HIRO 11aaaaaaaaaa 10func main() {    fmt.Println("這是一個測試 |")    fmt.Println("aaaaaaaaaa | 10*a")    fmt.Println()    fmt.Println("這是一個測試 |")    fmt.Println("aaaaaaaaa | 9*a")    fmt.Println()    fmt.Println("Both are not equal to the Chinese text.")    fmt.Println("The (pipe) lines are not under each other.")}問題:如何使我的框(第一個屏幕截圖)正確顯示?
查看完整描述

3 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個贊

戈朗語中的 Unicode 字符(如中文字符)需要 3 個字節(jié),而 ASCII 只需要 1 個字節(jié)。這是設(shè)計(jì)使然。

如果要檢查 unicode 字符的實(shí)際字符串大小,請使用 unicode/utf8 內(nèi)置包。

fmt.Printf("String: %s\nLength: %d\nRune Length: %d\n", c, len(c), utf8.RuneCountInString(c))

// String: 這是一個測試

// Length: 18

// Rune Length: 6

更基本的計(jì)數(shù)方法是使用 for 循環(huán)。


count := 0

for range "這是一個測試" {

    count++

}

fmt.Printf("Count=%d\n", count)

// Count=6

關(guān)于表格格式的中英文字符串的漂亮印刷,似乎沒有直接的方法。在這種情況下,制表符也不起作用。一個小的黑客解決這個問題是使用csv編寫器,如下所示:


data := [][]string{

    {"這是一個測試", "|"},

    {"aaaaaaaaaa", "|"},

    {"つのだ☆HIRO", "|"},

    {"aaaaaaaaaa", "|"},

}


w := csv.NewWriter(os.Stdout)

defer w.Flush()

w.Comma = '\t'


for _, row := range data {

    w.Write(row)

}

這應(yīng)該按預(yù)期打印數(shù)據(jù)。不幸的是,堆棧溢出打印的格式與我在終端中看到的格式不同。但游樂場拯救了我們。點(diǎn)擊這里


Note:這適用于符文大小彼此足夠接近的字符串。對于更長的字符串,您需要更多的解決方法。


查看完整回答
反對 回復(fù) 2022-10-04
?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個贊

我認(rèn)為這是你想要的


func TestChinese(t *testing.T) {

    tests := []string{

        "這是一個測試",

        "aaaaaaaaa",

        "つのだ☆HIRO",

        "aaaaaaaaaa",

        "這是aaaaa一個測試",

        "這是一個つの測試",

    }

    for _, tt := range tests {

        fmt.Printf("%s\t%d\t%d\n", tt, len([]rune(tt)), len([]byte(tt)))

    }

}

輸出:


這是一個測試  6   18

aaaaaaaaa   9   9

つのだ☆HIRO    8   16

aaaaaaaaaa  10  10

這是aaaaa一個測試 11  23

這是一個つの測試    8   24


查看完整回答
反對 回復(fù) 2022-10-04
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個贊

您的問題(如mkopriva在評論中指出的那樣)是一個顯示問題,不適合通過任何類型的計(jì)數(shù)技巧來解決。

當(dāng)我們用英語顯示可變音高或比例文本與等寬文本時,我們遇到了同樣的問題。也就是說,比較:

mmmm, tasty
iiii, tasty?

跟:

嗯,好吃
,好吃嗎?

(假設(shè)您使用瀏覽器閱讀此答案!我們不必打印漢字,甚至不必留下簡單的ASCII來解決問題!

您需要的是用于中文文本的等寬顯示字體,或者可能是一些以表格形式排版的軟件,以及您如何獲得...完全是另一個問題。


查看完整回答
反對 回復(fù) 2022-10-04
  • 3 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號