【导语】“micaotu”通过精心收集,向本站投稿了5篇Go语言按字节截取字符串的方法,下面是小编为大家整理后的Go语言按字节截取字符串的方法,如果喜欢可以分享给身边的朋友喔!
- 目录
篇1:Go语言按字节截取字符串的方法
作者:不吃皮蛋 字体:[增加 减小] 类型:转载
这篇文章主要介绍了Go语言按字节截取字符串的方法,涉及Go语言操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了Go语言按字节截取字符串的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
// 按字节截取字符串 utf-8不乱码
func SubstrByByte(str string, length int) string {
bs := []byte(str)[:length]
bl := 0
for i:=len(bs)-1; i>=0; i-- {
switch {
case bs[i] >= 0 && bs[i] <= 127:
return string(bs[:i+1])
case bs[i] >= 128 && bs[i] <= 191:
bl++;
case bs[i] >= 192 && bs[i] <= 253:
cl := 0
switch {
case bs[i] & 252 == 252:
cl = 6
case bs[i] & 248 == 248:
cl = 5
case bs[i] & 240 == 240:
cl = 4
case bs[i] & 224 == 224:
cl = 3
default:
cl = 2
}
if bl+1 == cl {
return string(bs[:i+cl])
}
return string(bs[:i])
}
}
return “”
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇2:go语言按显示长度截取字符串的方法
作者:不吃皮蛋 字体:[增加 减小] 类型:转载
根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数.
这两天在折腾golang,所以就用golang重写了着连个函数.代码如下:
代码如下:
package main
import (
“fmt”
)
func main {
fmt.Println(show_strlen(“哈哈1”))
fmt.Println(show_substr(“哈哈1什1么的”, 9))
}
根绝显示长度截取字符串
代码如下:
func show_substr(s string, l int) string {
if len(s) <= l {
return s
}
ss, sl, rl, rs := “”, 0, 0, []rune(s)
for _, r := range rs {
rint := int(r)
if rint < 128 {
rl = 1
} else {
rl = 2
}
if sl + rl >l {
break
}
sl += rl
ss += string(r)
}
return ss
}
根据字符串显示获取显示长度
代码如下:
func show_strlen(s string) int {
sl := 0
rs := []rune(s)
for _, r := range rs {
rint := int(r)
if rint < 128 {
sl++
} else {
sl += 2
}
}
return sl
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇3:按字节截取字符串
按字节截取字符串
1.日本网站上使用的一种方法
select substring(CAST(カラム as TEXT),n,m)
2.个人经常使用的方法
select Cast('中文z哈hongwen123' As varchar(7)) as ee
3.和cast相同的一种
select convert(varchar(200), substring(convert(varbinary(200),'中文z高wen123'), 1, 6))
篇4:go语言实现字符串base64编码的方法
作者:令狐不聪 字体:[增加 减小] 类型:转载
这篇文章主要介绍了go语言实现字符串base64编码的方法,实例分析了Go语言操作字符串的技巧及base64编码的使用技巧,需要的朋友可以参考下
本文实例讲述了go语言实现字符串base64编码的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“fmt”
“encoding/base64”
)
func main {
var b bytes.Buffer
w := base64.NewEncoder(base64.URLEncoding, &b)
w.Write(data)
w.Close()
data := b.Bytes()
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇5:go语言对文件按照指定块大小进行分割的方法
作者:work24 字体:[增加 减小] 类型:转载
这篇文章主要介绍了go语言对文件按照指定块大小进行分割的方法,实例分析了Go语言文件操作的技巧,需要的朋友可以参考下
本文实例讲述了go语言对文件按照指定块大小进行分割的方法,分享给大家供大家参考。具体如下:
代码如下:
import (
// “bufio”
“flag”
“fmt”
“io”
“os”
)
import “strconv”
var infile *string = flag.String(“f”, “Null”, “please input a file name or dir.”)
var size *string = flag.String(“s”, “0”, “please input a dst file size.”)
//func dataCopy(file *os.File, file *os.File)
func SplitFile(file *os.File, size int) {
finfo, err := file.Stat()
if err != nil {
fmt.Println(“get file info failed:”, file, size)
}
fmt.Println(finfo, size)
//每次最多拷贝1m
bufsize := 1024 * 1024
if size < bufsize {
bufsize = size
}
buf := make([]byte, bufsize)
num := (int(finfo.Size()) + size - 1) / size
fmt.Println(num, len(buf))
for i := 0; i < num; i++ {
copylen := 0
newfilename := finfo.Name() + strconv.Itoa(i)
newfile, err1 := os.Create(newfilename)
if err1 != nil {
fmt.Println(“failed to create file”, newfilename)
} else {
fmt.Println(“create file:”, newfilename)
}
for copylen < size {
n, err2 := file.Read(buf)
if err2 != nil && err2 != io.EOF {
fmt.Println(err2, “failed to read from:”, file)
break
}
if n <= 0 {
break
}
//fmt.Println(n, len(buf))
//写文件
w_buf := buf[:n]
newfile.Write(w_buf)
copylen += n
}
}
return
}
func main() {
flag.Parse()
if *infile == “Null” {
fmt.Println(“no file to input”)
return
}
file, err := os.Open(*infile)
if err != nil {
fmt.Println(“failed to open:”, *infile)
}
defer file.Close()
size, _ := strconv.Atoi(*size)
SplitFile(file, size*1024)
}
希望本文所述对大家的Go语言程序设计有所帮助,
★ go的短语和用法
★ 按比分配应用题
★ 三角形按边分类
Go语言按字节截取字符串的方法(精选5篇)




