码迷,mamicode.com
首页 > 其他好文 > 详细

Go字符串

时间:2020-02-01 10:31:14      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:循环   cdh   join   编码   substring   UNC   parse   for循环   位置   

1. 字符串的声明是使用

package main

import "fmt"

func main() {
	/*
	Go中的字符串是一个字节的切片。
		可以通过将其内容封装在“”中来创建字符串。Go中的字符串是Unicode兼容的,并且是UTF-8编码的。

	字符串是一些字节的集合。
		理解为一个字符的序列。
		每个字符都有固定的位置(索引,下标,index:从0开始,到长度减1)

	语法:"",``

	字符:--->对应编码表中的编码值
		A-->65
		B-->66
		a-->97
		...

	字节:byte-->uint8

	 */
	//1.定义字符串
	s1 := "hello中国"
	s2 := `hello world`
	fmt.Println(s1)
	fmt.Println(s2)

	//2.字符串的长度:返回的是字节的个数
	fmt.Println(len(s1))
	fmt.Println(len(s2))

	//3.获取某个字节
	fmt.Println(s2[0]) //获取字符串中的第一个字节
	a := ‘h‘
	b := 104
	fmt.Printf("%c,%c,%c\n", s2[0], a, b) //h,h,h

	//4.字符串的遍历
	//for循环
	for i := 0; i < len(s2); i++ {
		//fmt.Println(s2[i])
		fmt.Printf("%c\t", s2[i])
		//h	e	l	l	o	 	w	o	r	l	d	
	}
	fmt.Println()

	//for range
	for _, v := range s2 {
		//fmt.Println(i,v)
		fmt.Printf("%c", v) //hello world
	}
	fmt.Println()

	//5.字符串是字节的集合
	slice1 := []byte{65, 66, 67, 68, 69}
	s3 := string(slice1) //根据一个字节切片,构建字符串
	fmt.Println(s3) //ABCDE

	s4 := "abcdef"
	slice2 := []byte(s4) //根据字符串,获取对应的字节切片
	fmt.Println(slice2) //[97 98 99 100 101 102]

	//6.字符串不能修改
	fmt.Println(s4) //abcdef
	//s4[2] = ‘B‘
}

2. strings包下的关于字符串的函数

package main

import (
	"fmt"
	"strings"
)

func main() {
	/*
	strings包下的关于字符串的函数

	 */
	s1 := "helloworld"
	//1.是否包含指定的内容-->bool
	fmt.Println(strings.Contains(s1, "abc")) //false
	//2.是否包含chars中任意的一个字符即可
	fmt.Println(strings.ContainsAny(s1, "abcd")) //true
	//3.统计substr在s中出现的次数
	fmt.Println(strings.Count(s1, "lloo")) //0

	//4.以xxx前缀开头,以xxx后缀结尾
	s2 := "20190525课堂笔记.txt"
	if strings.HasPrefix(s2, "201905") {
		fmt.Println("19年5月的文件。。")
	}
	if strings.HasSuffix(s2, ".txt") {
		fmt.Println("文本文档。。")
	}

	//索引
	//helloworld
	fmt.Println(strings.Index(s1, "lloo"))     //查找substr在s中的位置,如果不存在就返回-1
	fmt.Println(strings.IndexAny(s1, "abcdh")) //查找chars中任意的一个字符,出现在s中的位置
	fmt.Println(strings.LastIndex(s1, "l"))    //查找substr在s中最后一次出现的位置

	//字符串的拼接
	ss1 := []string{"abc", "world", "hello", "ruby"}
	s3 := strings.Join(ss1, "-")
	fmt.Println(s3) //abc-world-hello-ruby

	//切割
	s4 := "123,4563,aaa,49595,45"
	ss2 := strings.Split(s4, ",")
	//fmt.Println(ss2)
	for i := 0; i < len(ss2); i++ {
		fmt.Println(ss2[i])
	}

	//重复,自己拼接自己count次
	s5 := strings.Repeat("hello", 5)
	fmt.Println(s5) //hellohellohellohellohello

	//替换
	//helloworld
	s6 := strings.Replace(s1, "l", "*", -1)
	fmt.Println(s6) //he**owor*d
	//fmt.Println(strings.Repeat("hello",5))
	
	//大小写
	s7 := "heLLo WOrlD**123.."
	fmt.Println(strings.ToLower(s7)) //hello world**123..
	fmt.Println(strings.ToUpper(s7)) //HELLO WORLD**123..

	/*
	截取子串:
	substring(start,end)-->substr
	str[start:end]-->substr
		包含start,不包含end下标
	 */
	fmt.Println(s1) //helloworld
	s8 := s1[:5]
	fmt.Println(s8) //hello
	fmt.Println(s1[5:]) //world
}

3. strconv包

package main

import (
	"fmt"
	"strconv"
)

func main() {
	/*
	strconv包:字符串和基本类型之前的转换
		string convert
	 */
	//fmt.Println("aa"+100) //java中可以这样写
	//1.字符串转bool类型
	s1 := "true"
	b1, err := strconv.ParseBool(s1)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("%T,%t\n", b1, b1) //bool,true

	ss1 := strconv.FormatBool(b1)
	fmt.Printf("%T,%s\n", ss1, ss1) //string,true

	//2.字符串转整数
	s2 := "100"
	i2, err := strconv.ParseInt(s2, 2, 64)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("%T,%d\n", i2, i2) //int64,4

	ss2 := strconv.FormatInt(i2, 10)
	fmt.Printf("%T,%s\n", ss2, ss2) //string,4

	//itoa() int-->string
	//atoi() string-->int
	i3, err := strconv.Atoi("-42") //转为int类型
	fmt.Printf("%T,%d\n", i3, i3) //int,-42
	ss3 := strconv.Itoa(-42)
	fmt.Printf("%T,%s\n", ss3, ss3) //string,-42
}

 

Go字符串

标签:循环   cdh   join   编码   substring   UNC   parse   for循环   位置   

原文地址:https://www.cnblogs.com/yzg-14/p/12247492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!