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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

共享的GAE數(shù)據(jù)存儲(chǔ)區(qū),Go <-> Java,regexp.FindStringIndex索引移位

共享的GAE數(shù)據(jù)存儲(chǔ)區(qū),Go <-> Java,regexp.FindStringIndex索引移位

Go
素胚勾勒不出你 2021-04-29 14:57:54
短版: 打印3,這很有意義,因?yàn)镚o語(yǔ)言中的字符串基本上是一個(gè)字節(jié)的片,并且需要三個(gè)字節(jié)來(lái)表示此字符。我如何才能獲得len和regexp函數(shù)來(lái)使用字符而不是字節(jié)。package mainimport "fmt"func main() {    fmt.Println(len("ウ"))//returns 3    fmt.Println(utf8.RuneCountInString("ウ"))//returns 1}背景:我正在使用JDO(Java)將文本保存到GAE數(shù)據(jù)存儲(chǔ)中。然后,我使用Go處理文本,特別是使用regexp.FindStringIndex并將索引保存到數(shù)據(jù)存儲(chǔ)中。然后回到Java領(lǐng)域,我發(fā)送未修改的文本,并通過(guò)json索引到GWT客戶端。索引在“移動(dòng)”過(guò)程中的某個(gè)位置,因此當(dāng)它在客戶端上時(shí),它們已關(guān)閉??磥?lái)問(wèn)題與字符編碼有關(guān),我假設(shè)Java / Go解釋文本(索引)的方式與utf-8 char / byte不同?我在regexp包中看到了對(duì)符文的引用。我想我可以使regexp.FindStringIndex返回go中的字節(jié)索引,或者使GWT客戶端了解utf-8索引。有什么建議么?如果將來(lái)需要國(guó)際化該應(yīng)用程序,我應(yīng)該使用UTF-8,對(duì)嗎?
查看完整描述

1 回答

?
揚(yáng)帆大魚(yú)

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

正如您可能已經(jīng)了解到的那樣,Go和Java對(duì)待字符串的方式有所不同。在Java中,字符串是一系列代碼點(diǎn)(字符)。在Go中,字符串是一系列字節(jié)。Go中的文本操作函數(shù)在必要時(shí)可以理解UTF-8代碼點(diǎn),但是由于字符串以字節(jié)表示,因此它們返回并使用的索引是字節(jié)索引,而不是字符索引。

正如您在注釋中觀察到的那樣,您可以使用RuneReaderFindReaderIndex獲取以字符而不是字節(jié)為單位的索引。strings.Reader提供的實(shí)現(xiàn)RuneReader,因此您可以使用strings.NewReader將字符串包裝到中RuneReader。

另一個(gè)選擇是獲取所需的in字符長(zhǎng)度的子字符串,然后將其傳遞給utf8.RuneLen,后者返回UTF-8字符串中的字符數(shù)。但是,使用aRuneReader可能更有效。


查看完整回答
反對(duì) 回復(fù) 2021-05-10
  • 1 回答
  • 0 關(guān)注
  • 259 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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