您当前的位置:首页 > 科技知识

go语言字符字节数查询方法解析

作者:远客网络

go璇█鎬庝箞鏌ュ瓧绗﹀崰鍑犱釜瀛楄妭

鍦℅o璇█涓紝瑕佹煡涓€涓瓧绗﹀崰鍑犱釜瀛楄妭锛屽彲浠ヤ娇鐢?code>len()鍑芥暟銆?strong>1銆佸瓧绗︿覆鐨勫瓧鑺傞暱搴︺€?銆乁nicode瀛楃鐨勫瓧鑺傞暱搴︺€?銆佸瓧鑺傚拰瀛楃鐨勫尯鍒?/strong>銆傚叾涓紝1鏄渶甯歌鐨勭敤娉曪紝閫氳繃璋冪敤len()鍑芥暟鍙互鐩存帴鑾峰彇瀛楃涓茬殑瀛楄妭闀垮害銆備笅闈㈣缁嗚В閲婅繖涓€鐐广€?/p>

瑕佽幏鍙栧瓧绗︿覆鐨勫瓧鑺傞暱搴︼紝鍙渶浣跨敤鍐呯疆鐨?code>len()鍑芥暟锛屼緥濡傦細

str := "浣犲ソ"

length := len(str)

fmt.Println(length) // 杈撳嚭: 6

鍦ㄨ繖涓緥瀛愪腑锛?quot;浣犲ソ"鏄竴涓猆TF-8缂栫爜鐨勫瓧绗︿覆锛屾瘡涓眽瀛楀崰3涓瓧鑺傦紝鍥犳鎬婚暱搴︿负6涓瓧鑺傘€?/p>

涓€銆佸瓧绗︿覆鐨勫瓧鑺傞暱搴?/h2>

鍦℅o璇█涓紝瀛楃涓叉槸浠TF-8缂栫爜瀛樺偍鐨勩€俇TF-8缂栫爜鐨勫瓧绗﹂暱搴︽槸鍙彉鐨勶紝ASCII瀛楃鍗犵敤1涓瓧鑺傦紝鑰屼腑鏂囧瓧绗﹂€氬父鍗犵敤3涓瓧鑺傘€傝鑾峰彇瀛楃涓茬殑瀛楄妭闀垮害锛屽彲浠ヤ娇鐢?code>len()鍑芥暟锛岃繖涓嚱鏁拌繑鍥炵殑鏄瓧绗︿覆鍦ㄥ唴瀛樹腑鍗犵敤鐨勫瓧鑺傛暟銆?/p>

str := "Hello, 涓栫晫"

length := len(str)

fmt.Println(length) // 杈撳嚭: 13

鍦ㄨ繖涓緥瀛愪腑锛屽瓧绗︿覆"Hello, 涓栫晫"鍖呭惈7涓狝SCII瀛楃鍜?涓眽瀛楋紝ASCII瀛楃姣忎釜鍗?涓瓧鑺傦紝姹夊瓧姣忎釜鍗?涓瓧鑺傦紝鍥犳鎬婚暱搴︿负13涓瓧鑺傘€?/p>

浜屻€乁nicode瀛楃鐨勫瓧鑺傞暱搴?/h2>

鍦℅o璇█涓紝闄や簡鍙互浣跨敤len()鍑芥暟鏉ヨ幏鍙栧瓧绗︿覆鐨勫瓧鑺傞暱搴﹀锛岃繕鍙互閫氳繃utf8.RuneCountInString()鍑芥暟鏉ヨ幏鍙栧瓧绗︿覆涓璘nicode瀛楃鐨勬暟閲忋€俇nicode瀛楃鐨勯暱搴﹀湪瀛楃涓蹭腑鏄笉鍥哄畾鐨勶紝鍙兘鍗犵敤1鍒?涓瓧鑺備笉绛夈€?/p>

import (

"fmt"

"unicode/utf8"

)

str := "Hello, 涓栫晫"

runeCount := utf8.RuneCountInString(str)

fmt.Println(runeCount) // 杈撳嚭: 9

鍦ㄨ繖涓緥瀛愪腑锛?code>"Hello, 涓栫晫"鍖呭惈7涓狝SCII瀛楃鍜?涓眽瀛楋紝鍏辫9涓猆nicode瀛楃銆?/p>

涓夈€佸瓧鑺傚拰瀛楃鐨勫尯鍒?/h2>

鐞嗚В瀛楃涓茬殑瀛楄妭闀垮害鍜屽瓧绗﹂暱搴︾殑鍖哄埆瀵逛簬澶勭悊澶氳瑷€鏂囨湰闈炲父閲嶈銆傚湪鏌愪簺鎯呭喌涓嬶紝鎴戜滑闇€瑕佸鐞嗗崟涓瓧绗﹁€屼笉鏄瓧鑺傘€備緥濡傦紝瑕侀亶鍘嗕竴涓瓧绗︿覆涓殑姣忎釜瀛楃锛屽彲浠ヤ娇鐢?code>range鍏抽敭瀛楋紝瀹冧細鑷姩澶勭悊澶氬瓧鑺傜殑Unicode瀛楃銆?/p>

str := "Hello, 涓栫晫"

for _, runeValue := range str {

fmt.Printf("%c ", runeValue)

}

// 杈撳嚭: H e l l o , 涓?鐣?/p>

杩欎釜渚嬪瓙灞曠ず浜嗗浣曚娇鐢?code>range鍏抽敭瀛楁潵閬嶅巻瀛楃涓蹭腑鐨勬瘡涓猆nicode瀛楃锛岃€屼笉浠呬粎鏄瓧鑺傘€?/p>

鍥涖€佷娇鐢ㄨ〃鏍艰〃绀轰笉鍚屽瓧绗︾殑瀛楄妭闀垮害

浠ヤ笅鏄竴浜涘父瑙佸瓧绗﹀湪UTF-8缂栫爜涓嬬殑瀛楄妭闀垮害锛?/p>

瀛楃绫诲瀷 绀轰緥瀛楃 瀛楄妭闀垮害
ASCII瀛楃 A 1
鎷変竵瀛楃 2
姹夊瓧 涓?/td>

3
琛ㄦ儏绗﹀彿 馃槉 4

閫氳繃浜嗚В涓嶅悓绫诲瀷瀛楃鐨勫瓧鑺傞暱搴︼紝鍙互鏇村ソ鍦板鐞嗗拰鎿嶄綔瀛楃涓层€?/p>

浜斻€佸疄渚嬭鏄?/h2>

鍋囪鎴戜滑鏈変竴涓瓧绗︿覆锛岄渶瑕佽绠楀叾涓瘡绉嶅瓧绗︾被鍨嬬殑鏁伴噺鍜屾€诲瓧鑺傞暱搴︺€備互涓嬫槸涓€涓畬鏁寸殑绀轰緥锛?/p>

import (

"fmt"

"unicode/utf8"

)

func main() {

str := "Hello, 涓栫晫馃槉"

fmt.Printf("瀛楃涓? %sn", str)

// 璁$畻瀛楄妭闀垮害

byteLength := len(str)

fmt.Printf("瀛楄妭闀垮害: %dn", byteLength)

// 璁$畻Unicode瀛楃鏁伴噺

runeCount := utf8.RuneCountInString(str)

fmt.Printf("Unicode瀛楃鏁伴噺: %dn", runeCount)

// 鍒嗘瀽姣忎釜瀛楃鐨勫瓧鑺傞暱搴?/p>

for _, runeValue := range str {

fmt.Printf("瀛楃: %c, 瀛楄妭闀垮害: %dn", runeValue, len(string(runeValue)))

}

}

杩欎釜绀轰緥绋嬪簭灞曠ず浜嗗浣曡绠楀瓧绗︿覆鐨勬€诲瓧鑺傞暱搴︺€乁nicode瀛楃鏁伴噺锛屽苟鍒嗘瀽姣忎釜瀛楃鐨勫瓧鑺傞暱搴︺€?/p>

鎬荤粨

瑕佹煡涓€涓瓧绗﹀湪Go璇█涓崰鐢ㄧ殑瀛楄妭鏁帮紝鍙互浣跨敤len()鍑芥暟鑾峰彇瀛楃涓茬殑鎬诲瓧鑺傞暱搴︼紝鎴栬€呬娇鐢?code>utf8.RuneCountInString()鍑芥暟鑾峰彇Unicode瀛楃鐨勬暟閲忋€傜悊瑙e瓧鑺傚拰瀛楃鐨勫尯鍒浜庡鐞嗗璇█鏂囨湰闈炲父閲嶈锛屽苟涓斿湪澶勭悊澶嶆潅瀛楃涓叉椂瑕佽€冭檻瀛楃鐨勫瀛楄妭鎬ц川銆備娇鐢?code>range鍏抽敭瀛楀彲浠ユ柟渚垮湴閬嶅巻瀛楃涓蹭腑鐨勬瘡涓猆nicode瀛楃銆傞€氳繃杩欎簺鏂规硶锛屽彲浠ョ簿纭湴澶勭悊鍜屾搷浣滃瓧绗︿覆涓殑瀛楃鍜屽瓧鑺傘€?/p>

鏇村闂瓟FAQs锛?/strong>

1. Go璇█涓浣曞垽鏂竴涓瓧绗﹀崰鐢ㄥ嚑涓瓧鑺傦紵

鍦℅o璇█涓紝鎴戜滑鍙互浣跨敤len鍑芥暟鏉ヨ幏鍙栦竴涓瓧绗︿覆鐨勫瓧鑺傞暱搴︺€傜劧鑰岋紝瀵逛簬Unicode瀛楃鑰岃█锛屼竴涓瓧绗﹀彲鑳界敱澶氫釜瀛楄妭缁勬垚銆傚鏋滄垜浠兂瑕佺煡閬撲竴涓瓧绗﹀崰鐢ㄤ簡澶氬皯涓瓧鑺傦紝鍙互浣跨敤utf8.RuneLen鍑芥暟銆?/p>

涓嬮潰鏄竴涓ず渚嬩唬鐮侊細

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    str := "浣犲ソ锛屼笘鐣岋紒"
    for _, char := range str {
        byteLen := utf8.RuneLen(char)
        fmt.Printf("瀛楃 %c 鍗犵敤 %d 涓瓧鑺俓n", char, byteLen)
    }
}

杈撳嚭缁撴灉濡備笅锛?/p>

瀛楃 浣?鍗犵敤 3 涓瓧鑺?
瀛楃 濂?鍗犵敤 3 涓瓧鑺?
瀛楃 锛?鍗犵敤 3 涓瓧鑺?
瀛楃 涓?鍗犵敤 3 涓瓧鑺?
瀛楃 鐣?鍗犵敤 3 涓瓧鑺?
瀛楃 锛?鍗犵敤 3 涓瓧鑺?

2. 濡備綍鍒ゆ柇涓€涓瓧绗︿覆涓瓧绗﹀崰鐢ㄧ殑鎬诲瓧鑺傛暟锛?/strong>

濡傛灉鎯宠璁$畻涓€涓瓧绗︿覆涓墍鏈夊瓧绗﹀崰鐢ㄧ殑鎬诲瓧鑺傛暟锛屽彲浠ヤ娇鐢?code>utf8.RuneCountInString鍑芥暟銆傝鍑芥暟浼氳繑鍥炲瓧绗︿覆涓殑瀛楃鏁伴噺锛岃€屼笉鏄瓧鑺傞暱搴︺€?/p>

涓嬮潰鏄竴涓ず渚嬩唬鐮侊細

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    str := "Hello, 涓栫晫锛?quot;
    byteLen := utf8.RuneCountInString(str)
    fmt.Printf("瀛楃涓?"%s" 鍗犵敤浜?%d 涓瓧鑺俓n", str, byteLen)
}

杈撳嚭缁撴灉濡備笅锛?/p>

瀛楃涓?"Hello, 涓栫晫锛?quot; 鍗犵敤浜?13 涓瓧鑺?

3. 濡備綍鍒ゆ柇涓€涓瓧绗︽槸鍚﹀崰鐢ㄤ竴涓瓧鑺傦紵

鍦℅o璇█涓紝涓€涓瓧绗﹀崰鐢ㄤ竴涓瓧鑺傞€氬父鎰忓懗鐫€瀹冩槸ASCII瀛楃锛堝嵆鐮佺偣灏忎簬128鐨勫瓧绗︼級銆傛垜浠彲浠ヤ娇鐢?code>utf8.RuneLen鍑芥暟鏉ュ垽鏂竴涓瓧绗︽槸鍚﹀崰鐢ㄤ竴涓瓧鑺傘€?/p>

涓嬮潰鏄竴涓ず渚嬩唬鐮侊細

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    str := "Hello, 涓栫晫锛?quot;
    for _, char := range str {
        byteLen := utf8.RuneLen(char)
        if byteLen == 1 {
            fmt.Printf("瀛楃 %c 鍗犵敤 1 涓瓧鑺俓n", char)
        } else {
            fmt.Printf("瀛楃 %c 涓嶆鍗犵敤 1 涓瓧鑺俓n", char)
        }
    }
}

杈撳嚭缁撴灉濡備笅锛?/p>

瀛楃 H 鍗犵敤 1 涓瓧鑺?
瀛楃 e 鍗犵敤 1 涓瓧鑺?
瀛楃 l 鍗犵敤 1 涓瓧鑺?
瀛楃 l 鍗犵敤 1 涓瓧鑺?
瀛楃 o 鍗犵敤 1 涓瓧鑺?
瀛楃 , 鍗犵敤 1 涓瓧鑺?
瀛楃   鍗犵敤 1 涓瓧鑺?
瀛楃 涓?涓嶆鍗犵敤 1 涓瓧鑺?
瀛楃 鐣?涓嶆鍗犵敤 1 涓瓧鑺?
瀛楃 锛?涓嶆鍗犵敤 1 涓瓧鑺?


相关内容FAQs: