golang中bytes包

golang標(biāo)準(zhǔn)庫中提供了bytes包,該包幾乎和strings包給string提供的功能,只不過bytes包對應(yīng)的是[]byte簿姨。和strings一樣痢甘,并不修改傳入變量喇嘱,而是返回其副本修改之后的內(nèi)容。

整個包分為以下幾種操作:轉(zhuǎn)換塞栅、比較者铜、去除、分割放椰、查找作烟、替換

一、轉(zhuǎn)換
將s的副本中所有字符修改成大寫(小寫)砾医,然后返回

func ToUpper(s []byte) []byte  //  全部轉(zhuǎn)大寫
func ToLower(s []byte) []byte  // 全部轉(zhuǎn)小寫
func ToTitle(s []byte) []byte  // 全部轉(zhuǎn)大寫

使用指定的映射表將對s的副本中的所有字符進(jìn)行修改拿撩,然后返回

func ToUpperSpecial(_case unicode.SpecialCase, s []byte) []byte
func ToLowerSpecial(_case unicode.SpecialCase, s []byte) []byte
func ToTitleSpecial(_case unicode.SpecialCase, s []byte)

將s的副本中的所有單詞的首字符修改為Title格式返回。

func Title(s []byte) []byte

二如蚜、比較
比較兩個[]byte压恒,nil參數(shù)相當(dāng)于[]byte{},

 a < b  返回-1
a == b 返回0
a > b   返回1
func Compare(a, b []byte) int

判斷a错邦、b是否相等探赫,nil參數(shù)相當(dāng)[]byte{}。

func Equal(a, b []byte) bool

判斷s撬呢、t是否相似伦吠,忽略大寫、小寫、標(biāo)題三種格式的區(qū)別讨勤。

func EqualFold(s, t []byte) bool

三箭跳、去除
去除s的副本左右包含cutset中的字符(返回s的副本)

func Trim(s []byte, cutset string) []byte
func TrimLeft(s []byte, cutset string) []byte
func TrimRight(s []byte, cutset string) []byte

去掉s副本的左右邊中f函數(shù)中返回true的字符

func TrimFunc(s []byte, f func(r rune) bool) []byte
func TrimLeftFunc(s []byte, f func(r rune) boo) []byte
func TrimRightFunc(s []byte, f func(r rune) bool) []byte

去除s副本兩邊的空白(unicode.IsSpace)

func TrimSpace(s []byte) []byte

去掉s副本的前綴prefix(后綴suffix)

func TrimPrefix(s, prefix []byte) []byte
func TrimSuffix(s, suffix []byte) []byte

四、分割
Split函數(shù)以sep為分隔符將s的副本切割分成多個子串潭千,結(jié)果不包含分隔符谱姓。
如果sep為空,則將s的副本分割成Unicode字符列表刨晴。
SplitN可以指定分割次數(shù)屉来,超出n的部分將不進(jìn)行分割,n小于0狈癞,表示分割所有茄靠。

func Split(s, sep []byte) [][]byte
func SplitN(s, sep []byte, n int) [][]byte

功能同Spelit,只不過結(jié)果包含分隔符(在各個子串尾部)

func SplitAfter(s, sep []byte) [][]byte
func SplitAfterN(s, sep []byte, n int) [][]byte

以連續(xù)空白為分隔符將s的副本分隔成多個子串蝶桶,結(jié)果不包含分隔符慨绳。

func Fields(s []byte) [][]byte

以符合f的字符為分隔符將s的副本分割成多個子串,結(jié)果不包含分割符真竖。

func FieldsFunc(s []byte, f func(rune) bool) [][]byte

以sep為連接符脐雪,將子串列表s的副本連接成一個字節(jié)串。

func Join(s [][]byte, sep []byte) []byte

將子串b重復(fù)count次后返回恢共。

func Repeat(b []byte, count int) []byte

五战秋、查找
判斷s是否有前綴prefix(后綴suffix)

func HasPrefix(s, prefix []byte) bool
func HasSuffix(s, suffix []byte) bool

判斷b中是否包含子串subslice(字符r)

func Contains(b, subslice []byte) bool
func ContainsRune(b []byte, r rune) bool

判斷b中是否包含chars中的任何一個字符

func ContainsAny(b []byte, chars string) bool

查找子串sep(字節(jié)c、字符r)在s中第一次出現(xiàn)的位置讨韭,找不到則返回-1脂信。

func Index(s, sep []byte) int
func IndexByte(s []byte, c byte) int
func IndexRune(s []byte, r rune) int

查找chars中的任何一個字符在s中第一次出現(xiàn)的位置,找不到則返回-1透硝。

func IndexAny(s []byte, chars strings) int

查找符合f的字符在s中第一次出現(xiàn)的位置狰闪,找不到則返回-1。

func IndexFunc(s []byte, f func(r rune) bool) int

功能同上濒生,只不過查找最后一次出現(xiàn)的位置尝哆。

func LastIndex(s, sep []byte) int
func LastIndexByte(s []byte, c byte) int
func LastIndexAny(s []byte, chars string) int
func LastIndexFunc(s []byte, f func(r rune) bool) int

獲取sep在s中出現(xiàn)的次數(shù)

func Count(s, sep []byte) int

六、替換
將s副本中的前n個old替換為new甜攀,n<0則替換全部。

func Replace(s, old, new []byte, n int) []byte

將s副本中字符替換為mapping(r)的返回值琐馆,如果mapping返回負(fù)值规阀,則丟棄該字符。

func Map(mapping func(r rune) rune, s []byte) []byte

將s副本轉(zhuǎn)換為[]rune類型返回

func Runes(s []byte) []rune

<h3>type Reader</h3>
將切片b封裝成bytes.Reader對象

func NewReader(b []byte) *Reader

bytes.Reader實現(xiàn)了如下接口:
1)io.ReadeSeeker
2)io.ReaderAt
3)io.WriterTo
4)io.ByteScanner
5)io.RuneScanner

// 返回未讀取部分的數(shù)據(jù)長度
func (r *Reader) Len() int

// 返回底層數(shù)據(jù)的總長度瘦麸,方便ReadAt使用谁撼,返回值不變。
func (r *Reader) Size() int64



type Buffer struct {...}
將buf包裝成bytes.Buffer對象。

func NewBuffer(buf []byte) *Buffer

轉(zhuǎn)化成bytes.Buffer對象

func NewBufferString(s string) *Buffer

Buffer是一個緩存厉碟,沒有底層數(shù)據(jù)喊巍,緩存的容量會根據(jù)需要自動調(diào)整。大多數(shù)情況下箍鼓,使用new(Buffer)就足以初始化一個Buffer了崭参。
bytes.Buffer實現(xiàn)了如下接口:
1)io.ReadWrite
2)io.ReaderFrom
3)io.WriterTo
4)io.ByteWriter
5)io.ByteScanner
6)io.RuneScanner
未讀取部分的數(shù)據(jù)長度

func (b *Buffer) Len() int

緩存的容量

func (b *Buffer) Cap() int

讀取前n字節(jié)的數(shù)據(jù)并以切片形式返回,如果數(shù)據(jù)長度小于n款咖,則全部讀取何暮。切片只在下一次讀寫操作前合法。

func (b *Buffer) Next(n int) []byte

讀取第一個delim及其之前的內(nèi)容铐殃,返回遇到的錯誤(一般是io.EOF)海洼。

func (b *Buffer) ReadBytes(delim byte) (line []byte, err error)
func (b *Buffer) ReadString(delim byte) (line string, err error)

寫入r的UTF-8編碼,返回寫入的字節(jié)數(shù)和error富腊。
保留err是為了匹配bufio.Write的WriteRune

func (b *Buffer) WriteRune(r rune) (n int, err error)

寫入s坏逢,返回寫入的字節(jié)數(shù)和error。

func (b *Buffer) WriteString(s string) (n int, err error)

引用未讀取部分的數(shù)據(jù)部分的數(shù)據(jù)切片(不移動讀取位置)

func (b *Buffer) Bytes() []byte

返回未讀取部分的數(shù)據(jù)字符串(不移動讀取位置)

func (b *Buffer) String() string

自動增加緩存容量赘被,以保證有n字節(jié)的剩余空間是整。
如果n小于0或無法增加則會panic。

func (b *Buffer) Grow(n int)

將數(shù)據(jù)長度截短到n字節(jié)帘腹,如果n小于0或大于Cap則panic贰盗。

func (b *Buffer) Teuncate(n int)

重設(shè)緩沖區(qū),清空所有數(shù)據(jù)(包括初始內(nèi)容)阳欲。

func (b *Buffer) Reset

轉(zhuǎn)載自:http://www.reibang.com/p/bc7baa8bb286

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舵盈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子球化,更是在濱河造成了極大的恐慌秽晚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筒愚,死亡現(xiàn)場離奇詭異赴蝇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巢掺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門句伶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陆淀,你說我怎么就攤上這事考余。” “怎么了轧苫?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵楚堤,是天一觀的道長。 經(jīng)常有香客問我,道長身冬,這世上最難降的妖魔是什么衅胀? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮酥筝,結(jié)果婚禮上滚躯,老公的妹妹穿的比我還像新娘。我一直安慰自己樱哼,他們只是感情好哀九,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搅幅,像睡著了一般阅束。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茄唐,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天息裸,我揣著相機(jī)與錄音,去河邊找鬼沪编。 笑死呼盆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚁廓。 我是一名探鬼主播访圃,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼相嵌!你這毒婦竟也來了腿时?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饭宾,失蹤者是張志新(化名)和其女友劉穎批糟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體看铆,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡徽鼎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弹惦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片否淤。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棠隐,靈堂內(nèi)的尸體忽然破棺而出石抡,到底是詐尸還是另有隱情,我是刑警寧澤宵荒,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響报咳,放射性物質(zhì)發(fā)生泄漏侠讯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一暑刃、第九天 我趴在偏房一處隱蔽的房頂上張望厢漩。 院中可真熱鬧,春花似錦岩臣、人聲如沸溜嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炸宵。三九已至,卻和暖如春谷扣,著一層夾襖步出監(jiān)牢的瞬間土全,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工会涎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留裹匙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓末秃,卻偏偏與公主長得像概页,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子练慕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 4.7. Text Sequence Type — str Python中的文本數(shù)據(jù)由str對象或strings處...
    xpf2000閱讀 3,236評論 0 2
  • 前言 最先接觸編程的知識是在大學(xué)里面贺待,大學(xué)里面學(xué)了一些基礎(chǔ)的知識徽曲,c語言,java語言麸塞,單片機(jī)的匯編語言等秃臣;大學(xué)畢...
    oceanfive閱讀 3,080評論 0 7
  • 前言 App優(yōu)化 - 需要優(yōu)化哪些? App優(yōu)化 - 性能分析工具 App的3種啟動方式 App優(yōu)化 - App啟...
    世道無情閱讀 1,939評論 0 3
  • 余華在《在細(xì)雨中呼喊》中說過: 我不再裝模作樣地?fù)碛泻芏嘤讶四墓ぃ腔氐搅斯聠沃邪麓耍哉嬲奈议_始了獨自的生活。有時...
    維愛之都閱讀 267評論 0 0
  • 1. 賺錢的公司在賣什么雁比? 很多人抱怨自己的行業(yè)不好稚虎,賺不到錢,付出得不到應(yīng)有的回報偎捎。反觀一些很“虛”的行業(yè)蠢终,如互...
    譚景桐閱讀 5,269評論 14 128