博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言字符串的处理与json转换
阅读量:7239 次
发布时间:2019-06-29

本文共 3852 字,大约阅读时间需要 12 分钟。

1 字符串的处理

可以通过Go标准库中的strings和strconv两个包中的函数进行相应的操作

1 字符串的操作

1 func Contains(s, substr string) bool2 字符串s中是否包含substr,返回bool值
package mainimport (    "fmt"    "strings")//1 func Contains(s, substr string) bool//字符串s中是否包含substr,返回bool值func main() {    fmt.Println(strings.Contains("hello","llo"))}//2 func Join(a []string, sep string) string//字符串链接,把slice a通过sep链接起来func main() {   s := []string{
"abc", "456", "999"} fmt.Println(strings.Join(s, "** "))}//3 func Index(s, sep string) int//在字符串s中查找sep所在的位置,返回位置值,找不到返回-1func main() { fmt.Println(strings.Index("chicken", "ken"))}//4 func Repeat(s string, count int) string//重复s字符串count次,最后返回重复的字符串func main() { fmt.Println("ba" + strings.Repeat("na", 2))}//5 func Replace(s, old, new string, n int) string//在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换func main() { fmt.Println(strings.Replace("ok ok ok", "k", "ky", 2))}//6 func Split(s, sep string) []string//把s字符串按照sep分割,返回slicefunc main() { fmt.Printf("%q\n", strings.Split("a,b,c", ","))}//7 func Trim(s string, cutset string) string//在s字符串的头部和尾部去除cutset指定的字符串func main() { fmt.Printf("[%q]", strings.Trim(" !哈!哈! ", "! "))}//8 func Fields(s string) []string//去除s字符串的空格符,并且按照空格分割返回slicefunc main() { fmt.Println( strings.Fields(" a b c "))}

2. 字符串转换

   Append系列函数:将整数等转换为字符串后,添加到现有的字节数组中

package mainimport (   "fmt"   "strconv")func main() {   str := make([]byte, 0, 100)   //以10进制方式追加   str = strconv.AppendInt(str, 4567, 10)   str = strconv.AppendBool(str, false)   str = strconv.AppendQuote(str, "abcdefg")   str = strconv.AppendQuoteRune(str, '单')   fmt.Println(string(str))}

  Format系列函数:把其他类型的转换为字符串

package mainimport (   "fmt"   "strconv"   "reflect")func main() {   a := strconv.FormatBool(false)   b := strconv.FormatInt(-1234, 10)   //Uint无符号   c := strconv.FormatUint(1234, 10)   //与FormatInt一样,简写   d := strconv.Itoa(-2234)   fmt.Println(a, b, c, d)   fmt.Println(reflect.TypeOf(a))}

2 处理json

  使用go语言内置的encoding/json 标准库

  1)编码json 

func Marshal(v interface{}) ([]byte, error)

  2) 通过结构体生成json

package mainimport (   "encoding/json"   "fmt")type Person struct {   Name  string   Hobby string}func main() {   //1.方式一   p := Person{
"Mr.Sun", "女"} b, err := json.Marshal(p) if err != nil { fmt.Println("json err:", err) } fmt.Println(string(b)) //2.方式二:格式化 //第二个参数:每行的前缀 //第三个参数:每行的缩进格式 b, err = json.MarshalIndent(p,""," ") if err != nil { fmt.Println("json err:", err) } fmt.Println(string(b))}

  3) struct tag      tag用来给json字段起别名,也可以隐藏字段

  4)通过map生成json

package mainimport (   "encoding/json"   "fmt")func main() {   //创建保存任意值的map   mmp := make(map[string]interface{})   mmp["name"] = "Mr.Sun"   mmp["age"] = 18   mmp["niubility"] = true   //转json   json, err := json.Marshal(mmp)   if err != nil {      fmt.Println("json err:", err)   }   fmt.Println(string(json))}

解码json

   解析到结构体

 

package mainimport (   "encoding/json"   "fmt")type Person struct {   Name  string `json:"name"`   Hobby string `json:"hobby"`}func main() {   //1.创建json数据   b := []byte(`{
"Name":"zhangsan","Hobby":"女"}`) //2.声明结构体 var p Person //3.json解析到结构体 err := json.Unmarshal(b, &p) if err != nil { fmt.Println("json err:", err) } fmt.Println(p)}

  解析到interface

package mainimport (   "encoding/json"   "fmt")func main() {   //1.创建json数据   b := []byte(`{
"Name":"zhangsan","Hobby":"女"}`) //2.声明空interface var i interface{} //3.解析 err := json.Unmarshal(b, &i) if err != nil { fmt.Println(err) } //默认转成了map fmt.Println(i) //4.解析到interface的json可以判断类型 m := i.(map[string]interface{}) for k, v := range m { switch vv := v.(type) { case string: fmt.Println(k, "是string类型", vv) case int: fmt.Println(k, "是int类型", vv) default: fmt.Println("xxx") } }}

 

转载于:https://www.cnblogs.com/liucsxiaoxiaobai/p/10835510.html

你可能感兴趣的文章
CSS-垂直|水平居中问题的解决方法总结
查看>>
Oracle数据库常用命令记录
查看>>
产品开发 - 产品架构
查看>>
一行代码让谷歌浏览器变成在线编辑器
查看>>
Redis的C语言客户端(hiredis)的安装和使用
查看>>
Java 之Object 类
查看>>
Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。
查看>>
C语言单向链表
查看>>
【LeedCode】3Sum
查看>>
基于Token的WEB后台认证机制
查看>>
hdu1412
查看>>
ssh卡在debug1: SSH2_MSG_KEXINIT sent解决方法
查看>>
HTTP 错误 404.17 - Not Found和 HTTP 错误 404.2 - Not Found 解决办法
查看>>
Python中可迭代对象、迭代器以及iter()函数的两个用法详解
查看>>
C# winform程序防止前台卡死
查看>>
JdbcDaoSupport应用
查看>>
Java加密算法(五)——非对称加密算法的由来DH
查看>>
centos7下vim8.1的编译安装教程
查看>>
服务器上传文件:通过远程桌面传输文件
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>