@


1. 字节数组

字节与字符的区别

  • 字节(Byte) 是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位

  • 字符(Character) 是计算机中使用的字母、数字、字和符号,比如'A'、'B'、'$'、'&'等

  • 一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示

  • 通俗点来说,人的语言就是字符,而字节是机器的语言

示例

 package main

import "fmt"

func main() {
var (
str1 = "hello"
str2 = "world"
)
str3 := str1 + " " + str2 //字符串转换成字节数组
tmp := []byte(str3)
fmt.Printf("数据: %s,长度: %d,数据类型: %T\n", str3, len(str3), str3)
fmt.Println("字节数组:", tmp)
fmt.Printf("数据: %s,长度: %d,数据类型: %T\n", tmp, len(tmp), tmp) //字节数组转字符串
fmt.Println("字节数组转字符串:", string(tmp)) //反转函数调用
fmt.Println("反转: ", Reverse(str3))
} //反转函数
func Reverse(str string) string {
var (
result string
leng int = len(str)
)
for i := 0; i < leng; i++ {
//sprintf转换数据类型为string,使用+进行拼接
result = result + fmt.Sprintf("%c", str[leng-i-1])
}
return result
} //输出结果如下 数据: hello world,长度: 11,数据类型: string
字节数组: [104 101 108 108 111 32 119 111 114 108 100]
数据: hello world,长度: 11,数据类型: []uint8
字节数组转字符串: hello world
反转: dlrow olleh

Sprintf的作用

package main

import "fmt"

func main() {
var a = 88
fmt.Printf("a的数值: %d , 类型: %T\n", a, a)
b := fmt.Sprintf("%d", a)
fmt.Printf("b的数值: %s , 类型: %T\n", b, b)
} //输出结果如下
a的数值: 88 , 类型: int
b的数值: 88 , 类型: string

2. 头尾处理

prefix()函数判断前缀

suffix()函数判断后缀

使用prefix函数判断URL是否是以http://为开头,如果不是,则加上http://

使用suffix函数判断路径是否以/结尾,如果不是,则加上/为结尾

package main

import (
"fmt"
"strings"
) func main() {
var (
url string
path string
) fmt.Println("请输入URL和路径:")
fmt.Scanf("%s%s", &url, &path)
fmt.Printf("URL: %s\n", urlProcess(url))
fmt.Printf("路径: %s", pathProcess(path)) } //字符串头部处理
func urlProcess(url string) string {
//判断是否以http://开头,返回布尔类型赋予result
result := strings.HasPrefix(url, "http://")
if !result {
url = fmt.Sprintf("http://%s", url)
}
return url
} //字符串尾部处理
func pathProcess(path string) string {
//判断是否以/结尾,返回布尔类型赋予result
result := strings.HasSuffix(path, "/")
if !result {
path = fmt.Sprintf("%s/", path)
}
return path
}
终端输入如下:

PS D:\goproject\src\test\main> go run .\main.go
请输入URL和路径:
www.google.com /opt/conf/k8s
URL: http://www.google.com
路径: /opt/conf/k8s/

3. 位置索引

Index()函数 判断出现在前面的位置

LastIndex()函数判断出现在末尾的位置

判断子字符串在字符串中首次出现的位置和在末尾出现的位置

package main

import (
"fmt"
"strings"
) func main() {
var (
a = "abbaabcddccd"
str = "cd"
) //判断str在a中首次出现的位置
head := strings.Index(a, str)
tail := strings.LastIndex(a, str)
fmt.Printf("首次出现的位置:%d\n最后出现的位置:%d\n", head, tail)
} //输出结果如下
首次出现的位置:6
最后出现的位置:10

4. 替换

Replace()函数

格式如下:

Replace(原字符串,原字段,新字符串,新字段,替换次数)

-1表示全部替换,0表示不替换

package main

import (
"fmt"
"strings"
) func main() {
var (
a = "abbaabcddccd"
)
//把cd替换成CD,-1表示全部替换,0表示不替换
result := strings.Replace(a, "cd", "CD", -1)
fmt.Printf("替换前: %v\n", a)
fmt.Printf("全部替换后: %v\n", result)
result1 := strings.Replace(a, "cd", "CD", 0)
fmt.Printf("不进行替换: %v\n", result1)
} //输出结果如下
替换前: abbaabcddccd
全部替换后: abbaabCDdcCD
不进行替换: abbaabcddccd

5. 统计次数

Count()函数 统计次数

package main

import (
"fmt"
"strings"
) func main() {
var a = "abbcddcedsca" count := strings.Count(a, "cd")
fmt.Printf("count: %v\n", count)
} //输出结果如下
count: 1

6. 重复

Repeat()函数 重复输出多次

package main

import (
"fmt"
"strings"
) func main() {
var a = "加油~" result := strings.Repeat(a, 3)
fmt.Printf("result: %v\n", result)
} //输出结果如下
result: 加油~加油~加油~

7. 大小写

ToUpper()函数 转换大写

ToLower()函数转换小写

package main

import (
"fmt"
"strings"
) func main() {
var a = "hello"
//转换大写
result1 := strings.ToUpper(a)
fmt.Printf("大写: %v\n", result1) //把上面转换的大写给转成小写
result2 := strings.ToLower(result1)
fmt.Printf("小写: %v\n", result2) } //输出结果如下
大写: HELLO
小写: hello

8. 去除字符

TrimSpace()函数去除空白字符

TrimLeft()从左往右删除

TrimRight()从右往左删除

  • 去除首尾空白字符
package main

import (
"fmt"
"strings"
) func main() {
var a = " abc " fmt.Println("长度:", len(a))
//去除首位空白的字符
result1 := strings.TrimSpace(a)
fmt.Println("去除首尾空白字符:", result1, "\n长度:", len(result1))
} //输出结果如下
长度: 5
去除首尾空白字符: abc
长度: 3
  • 去除指定位置字符
package main

import (
"fmt"
"strings"
) func main() {
var a = "this is test web" //去掉字符串首尾部web字符
result1 := strings.Trim(a, "web")
fmt.Println("尾部去除:", result1) //从左往右删除所有指定的字符,直到遇到不包含在指定的字符为止
result2 := strings.TrimLeft(a, "this")
//空格也需匹配删除,直到没有指定的字符可以匹配为止
result3 := strings.TrimLeft(a, "this ")
//从右往左删除所有指定的字符,直到遇到不包含在内的字符为止
result4 := strings.TrimRight(a, "web") fmt.Println("从左往右删除:", result2)
fmt.Println("从左往右删除,有空格:", result3)
fmt.Println("从右往左删除:", result4)
} //输出结果如下
尾部去除: this is test
从左往右删除: is test web
从左往右删除,有空格: est web
从右往左删除: this is test

9. 字符串切片处理

Fields()函数

Split()函数

  • 默认识别空格进行切片处理
package main

import (
"fmt"
"strings"
) func main() {
var str string = "abc def ghi"
//Fields函数默认识别的符号是空格
result1 := strings.Fields(str)
fmt.Printf("数据类型: %T , 数据格式: %v\n", result1, result1)
for i := 0; i < len(result1); i++ {
fmt.Println(result1[i])
}
} //输出结果如下
数据类型: []string , 数据格式: [abc def ghi]
abc
def
ghi
  • 识别其他符号分隔成切片
package main

import (
"fmt"
"strings"
) func main() {
var str string = "abc,def,ghi"
//识别逗号进行分隔切片
result := strings.Split(str, ",")
fmt.Printf("数据类型: %T , 数据格式: %v\n", result, result)
} //输出结果如下
数据类型: []string , 数据格式: [abc def ghi]

推荐使用Split()函数进行分隔

因为fields()函数默认只能识别空格,不能识别其他符号,而Split()函数则均可以识别


  • 把切片按指定分隔符进行转换成字符串

Join()函数

package main

import (
"fmt"
"strings"
) func main() {
//定义切片
var slice = []string{"123", "456", "789"}
fmt.Printf("切片: %v\n", slice) //切片转换成字符串
result := strings.Join(slice, ":")
fmt.Printf("数据结构: %v , 数据类型: %T", result, result)
} //输出结果如下
切片: [123 456 789]
数据结构: 123:456:789 , 数据类型: string

10. 数值处理

  • 使用strconv.Itoa()函数将数值转换成字符串
package main

import (
"fmt"
"strconv"
) func main() {
var num int = 12345678
fmt.Printf("初始数据类型: %T\n", num)
fmt.Printf("初始值: %d\n", num) //转换成字符串
result := strconv.Itoa(num)
fmt.Printf("转换后数据类型: %T\n", result)
fmt.Printf("转换后值为: %s", result)
} //输出结果如下
初始数据类型: int
初始值: 12345678
转换后数据类型: string
转换后值为: 12345678
  • 使用Sprintf()函数将整数转换成字符串
package main

import (
"fmt"
) func main() {
var num int = 12345678
fmt.Printf("初始数据类型: %T\n", num) //使用Sprintf()转换成字符串,可以实现多类型的转换
result := fmt.Sprintf("%d", num)
fmt.Printf("转换后数据类型:%T\n", result)
} //输出结果如下
初始数据类型: int
转换后数据类型:string
  • 使用strconv.Atoi()函数进行字符串转换整数
package main

import (
"fmt"
"strconv"
) func main() {
var str string = "12345678" //字符串转整数
result, err := strconv.Atoi(str)
//如果有转换过程中有错,就抛出错误,没有错就返回数据类型
if err == nil {
fmt.Printf("数据类型: %T\n", result)
} else {
fmt.Println(err)
}
} //输出结果
数据类型: int

Go 语言字符串常见操作的更多相关文章

  1. python字符串常见操作

    字符串常见操作 如有字符串mystr = 'hello world itcast and itcastcpp',以下是常见的操作 <1>find 检测 str 是否包含在 mystr中,如 ...

  2. python基础学习-字符串常见操作

    字符串常见操作 索引 s = "abcdefg" # 字符串数据,切片后取出的数据都是字符串类型 # 从左至右取值:从0开始 # 从右向左取值:从-1开始 print(" ...

  3. C语言字符串的操作

    C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. ...

  4. Python中字符串常见操作

    (1)find 查找 格式:mystr.find(str, start, end) 例如: mystr.find(str, start=0, end=len(mystr)) 作用:检测str是否包含在 ...

  5. Shell 字符串常见操作

    参考文章:http://blog.csdn.net/chen_jp/article/details/8922582 一 字符替换 origin=原字符串  str=替换后的字符串 替换命令: str= ...

  6. python中字符串常见操作(二)

    # 可迭代对象有:字典,列表,元组,字符串,集合 str1 = '192.168.1.1' str2 = 'as df gh jk' str3 = '小李子' str4 = ['aa','bb','c ...

  7. JAVA中字符串常见操作

    String str1="hello,world";String str2="Hello,World"; 1.字符串的比较:例,System.out.print ...

  8. C#字符串常见操作总结

    string类常用的方法和总结小记

  9. C语言 字符串操作 笔记

    /* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...

随机推荐

  1. MATLAB批量打印输出600PPI的图像且图像不留空白

    一 前言 最近收到审稿人的修改意见,其中有三条:一条为<RC: There were only five images evaluated in the experiment, and I re ...

  2. kafka 保证消息被消费和消息只消费一次

    1. 保证消息被消费 即使消息发送到了消息队列,消息也不会万无一失,还是会面临丢失的风险. 我们以 Kafka 为例,消息在Kafka 中是存储在本地磁盘上的, 为了减少消息存储对磁盘的随机 I/O, ...

  3. Configuration problem: 'bean' or 'parent' is required for <ref> element

    我出现此错误的原因是web.xml中没有指定spring的启动配置文件applicationContext.xml的加载位置.applicationContext.xml原来再webRoot/webI ...

  4. 两个对象值相同(x.equals(y) == true),但却可以有不同的hashcode?

    这个得看情况,如果该对象重写了equals方法,那么可能会出现equals相同,但hashcode不同的情况,但假如没有重写equals方法,那么它默认继承是Object的equals方法,根据源码可 ...

  5. Linux 网卡配置参数

    网卡配置文件位于 /etc/sysconfig/network-scripts/ 目录下 网卡配置文件在RHEL5/6以eth为网卡文件的前缀,在RHEL7中以ifcfg为网卡文件的前缀 配置 解释 ...

  6. thymeleaf调用静态类

    为啥需要调用本地静态方法 Thymeleaf模板里面有时候需要使用本地静态常量,要是每次都在控制层传一遍很麻烦 我们需要在Thymeleaf模板我们使用比如 1代表一年级,2代表二年级,3代表三年级等 ...

  7. mybatis-03-一对多关系映射(附源码)

    sb_mybatis /* Navicat MySQL Data Transfer Source Server : 阿里云 Source Server Version : 50724 Source H ...

  8. 聊一聊Java8 Optional,让你的代码更加优雅

    码农在囧途 随着时间的推移,曾经我们觉得重要的东西,可能在今天看来是如此的浅薄和无知,同理,今天我们放不下,想不开,觉得重要的东西,多年后我们可能也会觉得也就那样,所以,今天的的所有烦恼,忧愁,想不开 ...

  9. ctfhub web 前置技能(请求方式、302跳转、Cookie)

    第一题:请求方式 打开环境分析题目发现当前请求方式为GET 查看源码发现需要将请求方式改为CTFHUB就可以 使用bp抓包 发送到repeater模块修改请求方式 即可得到flag 第二题:302跳转 ...

  10. (stm32f103学习总结)—USART串口通信

    一. USART简介 USART即通用同步异步收发器,它能够灵活地与外部设备进行全双工 数据交换,满足外部设备对工业标准 NRZ 异步串行数据格式的要求. UART即通用异步收发器,它是在USART基 ...