golang_strings:trim分割“https://“出现的问题及解决办法

问题描述

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

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

解决办法

如果是删除前缀,使用strings.TrimPrefix替换strings.Trim和strings.TrimLeft;
如果是删除后缀,使用strings.TrimSuffix。

测试代码如下:

package main

import (
	"fmt"
	"strings"
)

func main() {
	test1()
	fmt.Println("----------------")
	test2()
	fmt.Println("----------------")
	test3()
	fmt.Println("----------------")
	test4()
	fmt.Println("----------------")
	test5()
	fmt.Println("----------------")
	test6()
}

func test1() {
	Url := "https://www.baidu.com/material/list"

	srcObjectName := strings.TrimLeft(Url, "https://www.baidu.com")
	fmt.Println("srcObjectName:", srcObjectName)
}

func test2() {
	Url := "https://www.baidu.com/material/list"

	srcObjectName := strings.Trim(Url, "https://www.baidu.com")
	fmt.Println("srcObjectName2:", srcObjectName)
}

func test3() {
	Url := "www.baidu.com/material/list"

	srcObjectName := strings.Trim(Url, "www.baidu.com")
	fmt.Println("srcObjectName3:", srcObjectName)
}

func test4() {
	Url := "https://www.baidu.com/material/list"

	srcObjectName := strings.TrimPrefix(Url, "https://www.baidu.com")
	fmt.Println("srcObjectName4:", srcObjectName)
}

func test5() {
	var s = "Goodbye,, world!"
	s = strings.TrimPrefix(s, ", world!")
	fmt.Println(s)
}

func test6() {
	var s = "Goodbye,, world!"
	s = strings.TrimSuffix(s, ", world!")
	fmt.Println(s)
}

Output:

srcObjectName: erial/list
----------------
srcObjectName2: erial/l
----------------
srcObjectName3: /material/list
----------------
srcObjectName4: /material/list
----------------
Goodbye,, world!
----------------
Goodbye,

你可能感兴趣的:(golang)