golang strings包的Replace的使用说明

函数声明:

func Trim(s string, cutset string) string

官方描述:

返回将 s 前后端所有 cutset 包含的 utf-8 码值都去掉的字符串。

示例代码:

package main
import (
 "fmt"
 "strings"
 _ "test/subpac"
)
func main(){
 fmt.Println("[ !!! Achtung! Achtung! !!! ]:[]:[", strings.Trim(" !!! Achtung! Achtung! !!! ", "") ,"\b]")
 fmt.Println("[ !!! Achtung! Achtung! !!! ]:[ ]:[", strings.Trim(" !!! Achtung! Achtung! !!! ", " ") ,"\b]")
 fmt.Println("[ !!! Achtung! Achtung! !!! ]:[!]:[", strings.Trim(" !!! Achtung! Achtung! !!! ", "!") , "\b]")
 fmt.Println("[ !!! Achtung! Achtung! !!! ]:[! ]:[", strings.Trim(" !!! Achtung! Achtung! !!! ", "! "), "\b]" )
}

输出结果:

[ !!! Achtung! Achtung! !!! ]:[]:[ !!! Achtung! Achtung! !!! ]
[ !!! Achtung! Achtung! !!! ]:[ ]:[ !!! Achtung! Achtung! !!!]
[ !!! Achtung! Achtung! !!! ]:[!]:[ !!! Achtung! Achtung! !!! ]
[ !!! Achtung! Achtung! !!! ]:[! ]:[ Achtung! Achtung]

第一行 cutset 为空(不是空格):因此输出原字符串。

第二行 cutset 为 ” “(空格):因此串首尾的两个空格字符被删除了。

第三行 cutset 为 “!” :收尾未匹配到该 cutset,因此输出原字符串。

第四行 cutset 为 “! “:首先匹配到空格,串首尾空格字符被删除,然后匹配到 “!”,继续删除首尾的各三个 “!”,于是得到该结果串。

注:输出结果多余的空格是因为 Println 在输出多个串时会在串之间添加空格。如下:

fmt.Println("123", "456", "789")

输出:

123 456 789

补充:golang_strings:trim分割“/“出现的坑及解决办法

问题描述

strings.Trim和strings.TrimLeft在分割带有“https://”的字符串时,会多分割一些字符,对分割结果造成影响。

推测原因:

TrimLeft 只针对utf-8字符进行处理,相关处理可能出现问题。// todo源码没看太懂,哪位大佬明白的可以帮忙解释下

解决办法

测试代码如下:

package main
import (
 "fmt"
 "strings"
)
// TrimLeft和Trim分割字符串时,对于有"/"的字符串切割会出现问题
// 切割前缀使用TrimPrefix,切割后缀使用TrimSuffix进行代替
func main() {
 Url := "https://www.baidu.com/material/list"
 fmt.Println(strings.TrimLeft(Url, "https://www.baidu.com")) // erial/list
 fmt.Println(strings.TrimPrefix(Url, "https://www.baidu.com")) // /material/list
 Url2 := ":www.baidu.com/material/list"
 fmt.Println(strings.Trim(Url, "https://www.baidu.com")) // erial/l
 fmt.Println(strings.Trim(Url2, ":www.baidu.com"))  // /material/list
 s := "Goodbye,, world!"
 fmt.Println(strings.TrimSuffix(s, ", world!")) // Goodbye,
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Go中strings的常用方法详解

    string操作在编程中具有极高的频率,那么string中有哪些有用的方法呢? 使用strings直接操作 Compare func Compare(a, b string) int 按照字典序比较两个字符串,通常情况下直接使用=,>,<会更快一些. Contains,ContainsAny 和 ContainsRune func Contains(s, substr string) bool func ContainsAny(s, chars string) bool func Contai

  • Go语言中strings和strconv包示例代码详解

    前缀和后缀 HasPrefix判断字符串s是否以prefix开头: strings.HaxPrefix(s string, prefix string) bool 示例: package main import ( "fmt" "strings" ) func main() { pre := "Thi" str1 := "This is a Go program!" fmt.Println(strings.HasPrefix(

  • go语言中strings包的用法汇总

    strings 包中的函数和方法 // strings.go ------------------------------------------------------------ // Count 计算字符串 sep 在 s 中的非重叠个数 // 如果 sep 为空字符串,则返回 s 中的字符(非字节)个数 + 1 // 使用 Rabin-Karp 算法实现 func Count(s, sep string) int func main() { s := "Hello,世界!!!!!&quo

  • golang 中strings包的Replace的使用说明

    函数声明为: func Replace(s, old, new string, n int) string 官方描述为: 返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串. 示例代码为,每行的结果见每行上面的注释部分: func main() { // non-overlapping: "123" repeat 6 times in s s := "123lafaldsjglad123lkfasdf123djfal123lkdjg

  • strings命令分析浅谈Go和C++编译时的一点小区别

    最近查一个bug, 用strings命令分析, 竟然出乎意料地没有结果, 非常纳闷. 最后根据这个线索查出了bug的根本原因. 1.  在C++中, 即使函数在代码层面没有被调用, 也会最终编译到二进制中, 用strings可以分析.  #include <iostream> using namespace std; void fun() { printf("hello world\n"); // strings分析有结果 } int main() { return 0;

  • golang strings包的Replace的使用说明

    函数声明: func Trim(s string, cutset string) string 官方描述: 返回将 s 前后端所有 cutset 包含的 utf-8 码值都去掉的字符串. 示例代码: package main import ( "fmt" "strings" _ "test/subpac" ) func main(){ fmt.Println("[ !!! Achtung! Achtung! !!! ]:[]:[&quo

  • Golang strings包常用字符串操作函数

    目录 func Contains func HasPrefix func HasSuffix func Replace func Split func ToLower func ToUpper func Repeat func Count func Index func Join 在编写代码的时候最常用到的就是字符串了,Golang 中的字符串统一使用 UTF-8 (属于Unicode编码的一种实现方式)进行编码,本篇文章将结合具体实例对常用的字符串操作函数进行介绍. func Contains

  • GO语言字符串处理Strings包的函数使用示例讲解

    目录 常用的字符串处理函数 (1) Contains (2) Join (3) Index (4) Repeat (5) Replace (6) Split (7) Trim (8) Fields 字符串转换 (1) Format (2) Parse (3) Append 常用的字符串处理函数 (1) Contains func Contains(s, substr string) bool 功能:字符串s中是否包含substr,返回bool值 演示如下: //查找一个字符串在另一个字符串中是否

  • golang time包下定时器的实现方法

    golang time包 和python一样,golang时间处理还是比较方便的,以下介绍了golang 时间日期,相关包 "time"的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍. 时间戳 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332 str格式化时间 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) // 这

  • golang日志包logger的用法详解

    1. logger包介绍 import "github.com/wonderivan/logger" 在我们开发go程序的过程中,发现记录程序日志已经不是fmt.print这么简单,我们想到的是打印输出能够明确指定当时运行时间.运行代码段,当然我们可以引入go官方自带包 import "log",然后通过log.Printf.log.Println等方式输出,而且默认是日志输出时只带时间的,想要同时输出所运行代码段位置,还需要通过执行一下指定进行相关简单的设置 lo

  • Golang导入包的几种方式(点,别名与下划线)

    目录 一.包的导入 二.包的不同导入方式 1.导入单个 2.导入多个包 3.特殊的导入方式 总结 一.包的导入 Golang 当导入多个包时,一般按照字母顺序排列包名称,像Goland 等IDE 会在保存文件时自动完成这个动作.Golang 导入包即等同于包含了这个包的所有的代码对象.为避免名称冲突,同一包中所有对象的标识符必须要求唯一.但是相同的标识符可以在不同的包中使用,因为可以使用包名来区分它们. 二.包的不同导入方式 1.导入单个 代码如下(示例): package main impor

  • Golang通过包长协议处理TCP粘包的问题解决

    tcp粘包产生的原因这里就不说了,因为大家能搜索TCP粘包的处理方法,想必大概对TCP粘包有了一定了解,所以我们直接从处理思路开始讲起 tcp粘包现象代码重现 首先,我们来重现一下TCP粘包,然后再此基础之上解决粘包的问题,这里给出了client和server的示例代码如下 /* 文件名:client.go client客户端的示例代码(未处理粘包问题) 通过无限循环无时间间隔发送数据给server服务器 server将会不间断的出现TCP粘包问题 */ package main import

  • golang RPC包原理和使用详细介绍

    目录 工作流程 工作模式 http模式 服务器模式 本篇文章旨在通过学习rpc包和github上的一个rpc小项目,熟悉和学习golang中各个包的使用 工作流程 通过阅读官方文档,了解了rpc的基本工作模式 第一步,建立一个用于远程调用的包,存放仅供远程调用使用的方法和类型- 第二步,实例化包的对象,并在rpc中注册该包,以便之后的调用 第三步,建立一个服务端,接收客户端的请求,使用编码器解析请求后,根据请求中的方法和参数,调用第二步注册的实例的方法,然后使用编码器把返回值加密后,返回给客户端

随机推荐