Skip to content

Something wrong with strings.TrimLeft when string start with '/v' #35149

Closed
@zhaozy93

Description

@zhaozy93

What version of Go are you using (go version)?

$ go version
go1.13.2

Does this issue reproduce with the latest release?

Not Sure

What operating system and processor architecture are you using (go env)?

go env Output
$ go env

What did you do?

Usually we use strings.TrimLeft to trim some fixed prefix, however when exec strings.TrimLeft("./csv/visitor.csv", "./csv/"), the EXPECTED result is "vistor.csv", the REAL result is "istor.csv".

It's amazing.

https://play.golang.com/p/EeY2DKiWeRR

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println("----------a-----------")
	a := "./csv/visitor.csv"
	fmt.Println(a)
	fff := strings.TrimLeft(a, "./csv/")
	fmt.Println(fff)

	fmt.Println("----------b-----------")
	b := "./csv/visitor.csv"
	fmt.Println(b)
	fff = strings.TrimLeft(b, "./csv")
	fmt.Println(fff)
	
	fmt.Println("----------c-----------")
	c := "./csv/visitor.csv"
	fmt.Println(c)
	fff = strings.TrimLeft(b, "./")
	fmt.Println(fff)
}

What did you expect to see?

----------a-----------
./csv/visitor.csv
visitor.csv
----------b-----------
./csv/visitor.csv
visitor.csv
----------c-----------
./csv/visitor.csv
csv/visitor.csv

What did you see instead?

----------a-----------
./csv/visitor.csv
isitor.csv
----------b-----------
./csv/visitor.csv
isitor.csv
----------c-----------
./csv/visitor.csv
csv/visitor.csv

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions