Как удалить кавычки из строки в Golang
у меня есть строка в Golang, которая окружена кавычками. Моя цель-убрать все кавычки по бокам, но игнорировать все кавычки внутри строки. Как мне это сделать? Мой инстинкт говорит мне использовать функцию удаления, как в C#, но я не вижу ничего подобного в Go.
например:
"hello""world"
должно быть преобразовано в:
hello""world
для дальнейшего уточнения, это:
"""hello"""
будет станьте таким:
""hello""
потому, что внешние, должны быть удалены только.
3 ответов
использовать выражение фрагмент:
s = s[1 : len(s)-1]
Если есть вероятность, что кавычек нет, то используйте это:
if len(s) > 0 && s[0] == '"' {
s = s[1:]
}
if len(s) > 0 && s[len(s)-1] == '"' {
s = s[:len(s)-1]
}
использовать выражения ломтик. Вы должны написать надежный код, который обеспечивает правильный вывод для несовершенного ввода. Например,
package main
import "fmt"
func trimQuotes(s string) string {
if len(s) >= 2 {
if s[0] == '"' && s[len(s)-1] == '"' {
return s[1 : len(s)-1]
}
}
return s
}
func main() {
tests := []string{
`"hello""world"`,
`"""hello"""`,
`"`,
`""`,
`"""`,
`goodbye"`,
`"goodbye"`,
`goodbye"`,
`good"bye`,
}
for _, test := range tests {
fmt.Printf("`%s` -> `%s`\n", test, trimQuotes(test))
}
}
выход:
`"hello""world"` -> `hello""world`
`"""hello"""` -> `""hello""`
`"` -> `"`
`""` -> ``
`"""` -> `"`
`goodbye"` -> `goodbye"`
`"goodbye"` -> `goodbye`
`goodbye"` -> `goodbye"`
`good"bye` -> `good"bye`
Вы можете воспользоваться ломтики, чтобы удалить первый и последний элемент среза.
package main
import "fmt"
func main() {
str := `"hello""world"`
if str[0] == '"' {
str = str[1:]
}
if i := len(str)-1; str[i] == '"' {
str = str[:i]
}
fmt.Println( str )
}
поскольку срез разделяет базовую память, это не копирует строку. Это просто меняет str
срез, чтобы начать один символ и закончить один символ раньше.
Это как различные байты.Функции обрезки работа.