溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

go語(yǔ)言求字符串長(zhǎng)度的方法

發(fā)布時(shí)間:2020-12-30 09:26:50 來(lái)源:億速云 閱讀:561 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下go語(yǔ)言求字符串長(zhǎng)度的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

go語(yǔ)言求字符串長(zhǎng)度的方法:1、使用“l(fā)en()”函數(shù)計(jì)算ASCII字符串長(zhǎng)度;2、使用“utf8.RuneCountInString()”函數(shù)計(jì)算Unicode字符串長(zhǎng)度。

Go語(yǔ)言計(jì)算字符串長(zhǎng)度——len()和RuneCountInString()

Go 語(yǔ)言的內(nèi)建函數(shù) len(),可以用來(lái)獲取切片、字符串、通道(channel)等的長(zhǎng)度。下面的代碼可以用 len() 來(lái)獲取字符串的長(zhǎng)度。

tip1 := "genji is a ninja"
fmt.Println(len(tip1))
tip2 := "忍者"
fmt.Println(len(tip2))

程序輸出如下:

16
6

len() 函數(shù)的返回值的類型為 int,表示字符串的 ASCII 字符個(gè)數(shù)或字節(jié)長(zhǎng)度。

輸出中第一行的 16 表示 tip1 的字符個(gè)數(shù)為 16。

輸出中第二行的 6 表示 tip2 的字符格式,也就是“忍者”的字符個(gè)數(shù)是 6,然而根據(jù)習(xí)慣,“忍者”的字符個(gè)數(shù)應(yīng)該是 2。

這里的差異是由于 Go 語(yǔ)言的字符串都以 UTF-8 格式保存,每個(gè)中文占用 3 個(gè)字節(jié),因此使用 len() 獲得兩個(gè)中文文字對(duì)應(yīng)的 6 個(gè)字節(jié)。

如果希望按習(xí)慣上的字符個(gè)數(shù)來(lái)計(jì)算,就需要使用 Go 語(yǔ)言中 UTF-8 包提供的 RuneCountInString() 函數(shù),統(tǒng)計(jì) Uncode 字符數(shù)量。

下面的代碼展示如何計(jì)算UTF-8的字符個(gè)數(shù)。

fmt.Println(utf8.RuneCountInString("忍者"))
fmt.Println(utf8.RuneCountInString("龍忍出鞘,fight!"))

程序輸出如下:

2
11

一般游戲中在登錄時(shí)都需要輸入名字,而名字一般有長(zhǎng)度限制??紤]到國(guó)人習(xí)慣使用中文做名字,就需要檢測(cè)字符串 UTF-8 格式的長(zhǎng)度。

ASCII 字符串長(zhǎng)度使用 len() 函數(shù)。

Unicode 字符串長(zhǎng)度使用 utf8.RuneCountInString() 函數(shù)。

以上是“go語(yǔ)言求字符串長(zhǎng)度的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI