Go的strconv一
生活随笔
收集整理的這篇文章主要介紹了
Go的strconv一
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
format是進(jìn)行轉(zhuǎn)換后面的
parse是轉(zhuǎn)換為后面的?
// 將布爾值轉(zhuǎn)換為字符串 true 或 false func FormatBool(b bool) string// 將字符串轉(zhuǎn)換為布爾值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False // 其它任何值都返回一個錯誤。 func ParseBool(str string) (bool, error)------------------------------// ErrRange 表示值超出范圍 var ErrRange = errors.New("value out of range")// ErrSyntax 表示語法不正確 var ErrSyntax = errors.New("invalid syntax")// 將整數(shù)轉(zhuǎn)換為字符串形式。base 表示轉(zhuǎn)換進(jìn)制,取值在 2 到 36 之間。 // 結(jié)果中大于 10 的數(shù)字用小寫字母 a - z 表示。 func FormatInt(i int64, base int) string func FormatUint(i uint64, base int) string// 將字符串解析為整數(shù),ParseInt 支持正負(fù)號,ParseUint 不支持正負(fù)號。 // base 表示進(jìn)位制(2 到 36),如果 base 為 0,則根據(jù)字符串前綴判斷, // 前綴 0x 表示 16 進(jìn)制,前綴 0 表示 8 進(jìn)制,否則是 10 進(jìn)制。 // bitSize 表示結(jié)果的位寬(包括符號位),0 表示最大位寬。 func ParseInt(s string, base int, bitSize int) (i int64, err error) func ParseUint(s string, base int, bitSize int) (uint64, error)// 將整數(shù)轉(zhuǎn)換為十進(jìn)制字符串形式(即:FormatInt(i, 10) 的簡寫) func Itoa(i int) string// 將字符串轉(zhuǎn)換為十進(jìn)制整數(shù),即:ParseInt(s, 10, 0) 的簡寫) func Atoi(s string) (int, error)------------------------------// 示例 func main() {fmt.Println(strconv.ParseInt("FF", 16, 0))// 255fmt.Println(strconv.ParseInt("0xFF", 16, 0))// 0 strconv.ParseInt: parsing "0xFF": invalid syntaxfmt.Println(strconv.ParseInt("0xFF", 0, 0))// 255fmt.Println(strconv.ParseInt("9", 10, 4))// 7 strconv.ParseInt: parsing "9": value out of range }------------------------------// FormatFloat 將浮點數(shù) f 轉(zhuǎn)換為字符串形式 // f:要轉(zhuǎn)換的浮點數(shù) // fmt:格式標(biāo)記(b、e、E、f、g、G) // prec:精度(數(shù)字部分的長度,不包括指數(shù)部分) // bitSize:指定浮點類型(32:float32、64:float64),結(jié)果會據(jù)此進(jìn)行舍入。 // // 格式標(biāo)記: // 'b' (-ddddp±ddd,二進(jìn)制指數(shù)) // 'e' (-d.dddde±dd,十進(jìn)制指數(shù)) // 'E' (-d.ddddE±dd,十進(jìn)制指數(shù)) // 'f' (-ddd.dddd,沒有指數(shù)) // 'g' ('e':大指數(shù),'f':其它情況) // 'G' ('E':大指數(shù),'f':其它情況) // // 如果格式標(biāo)記為 'e','E'和'f',則 prec 表示小數(shù)點后的數(shù)字位數(shù) // 如果格式標(biāo)記為 'g','G',則 prec 表示總的數(shù)字位數(shù)(整數(shù)部分+小數(shù)部分) // 參考格式化輸入輸出中的旗標(biāo)和精度說明 func FormatFloat(f float64, fmt byte, prec, bitSize int) string// 將字符串解析為浮點數(shù),使用 IEEE754 規(guī)范進(jìn)行舍入。 // bigSize 取值有 32 和 64 兩種,表示轉(zhuǎn)換結(jié)果的精度。 // 如果有語法錯誤,則 err.Error = ErrSyntax // 如果結(jié)果超出范圍,則返回 ±Inf,err.Error = ErrRange func ParseFloat(s string, bitSize int) (float64, error)------------------------------// 示例 func main() {s := "0.12345678901234567890"f, err := strconv.ParseFloat(s, 32)fmt.Println(f, err) // 0.12345679104328156fmt.Println(float32(f), err) // 0.12345679f, err = strconv.ParseFloat(s, 64)fmt.Println(f, err) // 0.12345678901234568 }------------------------------// 判斷字符串是否可以不被修改的表示為一個單行的反引號字符串。 // 字符串中不能含有控制字符(除了 \t)和“反引號”字符,否則返回 false func CanBackquote(s string) bool// 示例:找出所有 !CanBackquote 的字符 func main() {for i := rune(0); i < utf8.MaxRune; i++ {if !strconv.CanBackquote(string(i)) {fmt.Printf("%q, ", i)}} }// 結(jié)果如下: // '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\a', '\b', '\n', '\v', '\f', '\r', '\x0e', '\x0f', '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', '`', '\u007f', '\ufeff'------------------------------// 判斷 r 是否為可打印字符 // 可否打印并不是你想象的那樣,比如空格可以打印,而\t則不能打印 func IsPrint(r rune) bool// 判斷 r 是否為 Unicode 定義的圖形字符。 func IsGraphic(r rune) bool------------------------------// 示例:獲取不可打印字符和非圖形字符 func main() {var rnp, rng, rpng, rgnp []runeconst maxLen = 32for i := rune(0); i < utf8.MaxRune; i++ {if !strconv.IsPrint(i) { // 不可打印if len(rnp) < maxLen {rnp = append(rnp, i)}if strconv.IsGraphic(i) && len(rgnp) < maxLen { // 圖形字符rgnp = append(rgnp, i)}}if !strconv.IsGraphic(i) { // 非圖形字符if len(rng) < maxLen {rng = append(rng, i)}if strconv.IsPrint(i) && len(rpng) < maxLen { // 可打印rpng = append(rpng, i)}}}fmt.Printf("不可打印字符 :%q\n", rnp)fmt.Printf("非圖形字符 :%q\n", rng)fmt.Printf("不可打印圖形字符:%q\n", rgnp)fmt.Printf("可打印非圖形字符:%q\n", rpng) }// 不可打印字符 :['\x00' '\x01' '\x02' '\x03' '\x04' '\x05' '\x06' '\a' '\b' '\t' '\n' '\v' '\f' '\r' '\x0e' '\x0f' '\x10' '\x11' '\x12' '\x13' '\x14' '\x15' '\x16' '\x17' '\x18' '\x19' '\x1a' '\x1b' '\x1c' '\x1d' '\x1e' '\x1f'] // 非圖形字符 :['\x00' '\x01' '\x02' '\x03' '\x04' '\x05' '\x06' '\a' '\b' '\t' '\n' '\v' '\f' '\r' '\x0e' '\x0f' '\x10' '\x11' '\x12' '\x13' '\x14' '\x15' '\x16' '\x17' '\x18' '\x19' '\x1a' '\x1b' '\x1c' '\x1d' '\x1e' '\x1f'] // 不可打印圖形字符:['\u00a0' '\u1680' '\u2000' '\u2001' '\u2002' '\u2003' '\u2004' '\u2005' '\u2006' '\u2007' '\u2008' '\u2009' '\u200a' '\u202f' '\u205f' '\u3000'] // 可打印非圖形字符:[]------------------------------// 將 s 轉(zhuǎn)換為雙引號字符串 func Quote(s string) string// 功能同上,非 ASCII 字符和不可打印字符會被轉(zhuǎn)義 func QuoteToASCII(s string) string// 功能同上,非圖形字符會被轉(zhuǎn)義 func QuoteToGraphic(s string) string------------------------------// 示例 func main() {s := "Hello\t世界!\n"fmt.Println(s) // Hello 世界!(換行)fmt.Println(strconv.Quote(s)) // "Hello\t世界!\n"fmt.Println(strconv.QuoteToASCII(s)) // "Hello\t\u4e16\u754c\uff01\n"fmt.Println(strconv.QuoteToGraphic(s)) // "Hello\t世界!\n" }------------------------------// 將 r 轉(zhuǎn)換為單引號字符 func QuoteRune(r rune) string// 功能同上,非 ASCII 字符和不可打印字符會被轉(zhuǎn)義 func QuoteRuneToASCII(r rune) string// 功能同上,非圖形字符會被轉(zhuǎn)義 func QuoteRuneToGraphic(r rune) string------------------------------// Unquote 將“帶引號的字符串” s 轉(zhuǎn)換為常規(guī)的字符串(不帶引號和轉(zhuǎn)義字符) // s 可以是“單引號”、“雙引號”或“反引號”引起來的字符串(包括引號本身) // 如果 s 是單引號引起來的字符串,則返回該該字符串代表的字符 func Unquote(s string) (string, error)// UnquoteChar 將帶引號字符串(不包含首尾的引號)中的第一個字符“取消轉(zhuǎn)義”并解碼 // // s :帶引號字符串(不包含首尾的引號) // quote:字符串使用的“引號符”(用于對字符串中的引號符“取消轉(zhuǎn)義”) // // value :解碼后的字符 // multibyte:value 是否為多字節(jié)字符 // tail :字符串 s 解碼后的剩余部分 // error :返回 s 中是否存在語法錯誤 // // 參數(shù) quote 為“引號符” // 如果設(shè)置為單引號,則 s 中允許出現(xiàn) \'、" 字符,不允許出現(xiàn)單獨的 ' 字符 // 如果設(shè)置為雙引號,則 s 中允許出現(xiàn) \"、' 字符,不允許出現(xiàn)單獨的 " 字符 // 如果設(shè)置為 0,則不允許出現(xiàn) \' 或 \" 字符,但可以出現(xiàn)單獨的 ' 或 " 字符 func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)------------------------------// 示例 func main() {s1 := "`Hello 世界!`" // 解析反引號字符串s2 := `"Hello\t\u4e16\u754c\uff01"` // 解析雙引號字符串fmt.Println(strconv.Unquote(s1)) // Hello 世界! <nil>fmt.Println(strconv.Unquote(s2)) // Hello 世界! <nil>fmt.Println()fmt.Println(strconv.UnquoteChar(`\u4e16\u754c\uff01`, 0))// 19990 true \u754c\uff01 <nil>fmt.Println(strconv.UnquoteChar(`\"abc\"`, '"'))// 34 false abc\" <nil> }------------------------------// 將各種類型轉(zhuǎn)換為字符串后追加到 dst 尾部。 func AppendInt(dst []byte, i int64, base int) []byte func AppendUint(dst []byte, i uint64, base int) []byte func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte func AppendBool(dst []byte, b bool) []byte// 將各種類型轉(zhuǎn)換為帶引號字符串后追加到 dst 尾部。 func AppendQuote(dst []byte, s string) []byte func AppendQuoteToASCII(dst []byte, s string) []byte func AppendQuoteToGraphic(dst []byte, s string) []byte func AppendQuoteRune(dst []byte, r rune) []byte func AppendQuoteRuneToASCII(dst []byte, r rune) []byte func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte?
總結(jié)
以上是生活随笔為你收集整理的Go的strconv一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Goland安装
- 下一篇: Go的strconv二