Як обрізати провідні та кінцеві пробіли рядка?


176

Який ефективний спосіб обрізати провідні та кінцеві білі проміжки змінної рядка в Go?


4
Інтернет-документація описує, що саме відбувається, і має приклади, які можна застосувати та редагувати!
— Волкер

Я хотів би, щоб це можна було шукати в "Ruby strip golang"
— kangkyu

Відповіді:


267

Наприклад,

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := "\t Hello, World\n "
    fmt.Printf("%d %q\n", len(s), s)
    t := strings.TrimSpace(s)
    fmt.Printf("%d %q\n", len(t), t)
}

Вихід:

16 "\t Hello, World\n "
12 "Hello, World"

Спробуйте "\ t Привіт, \ nсвіт \ n" не працює :( ... як видалити новий рядок?
— KingRider

8
Він все ще обрізає початок і кінець, але не видалить новий рядок посередині, тому що це не те, що обрізка робить. Вам потрібно буде використовувати strings.Replace або щось подібне, щоб видалити новий рядок посередині рядка.
— Gustavo Poscidonio

34

Існує маса функцій для обрізки рядків на ходу.

Дивіться їх там: Обріжте

Ось приклад, адаптований з документації, видаляючи провідні та відсталі пробіли:

fmt.Printf("[%q]", strings.Trim(" Achtung  ", " "))

2
Як обрізати \ t \ n? fmt.Printf("%q", strings.Trim("\t\t\t\t", `! \t`))Це не працює
— tom10271

5
@aokaddaoc ви пробували strings.TrimSpace(str)?
— Ахмед Т. Алі


7

Для обрізки рядка, пакет "рядки" Go має TrimSpace() , Trim()функція , яка уріже початковий і кінцеві пробілу.

Перегляньте документацію для отримання додаткової інформації.


0

Як вже згадував @Kabeer, ви можете використовувати TrimSpace, і ось приклад з документації golang:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))
}

0

@peterSO має правильну відповідь. Я додаю сюди більше прикладів:

package main

import (
    "fmt"
    strings "strings"
)

func main() { 
    test := "\t pdftk 2.0.2  \n"
    result := strings.TrimSpace(test)
    fmt.Printf("Length of %q is %d\n", test, len(test))
    fmt.Printf("Length of %q is %d\n\n", result, len(result))

    test = "\n\r pdftk 2.0.2 \n\r"
    result = strings.TrimSpace(test)
    fmt.Printf("Length of %q is %d\n", test, len(test))
    fmt.Printf("Length of %q is %d\n\n", result, len(result))

    test = "\n\r\n\r pdftk 2.0.2 \n\r\n\r"
    result = strings.TrimSpace(test)
    fmt.Printf("Length of %q is %d\n", test, len(test))
    fmt.Printf("Length of %q is %d\n\n", result, len(result))

    test = "\r pdftk 2.0.2 \r"
    result = strings.TrimSpace(test)
    fmt.Printf("Length of %q is %d\n", test, len(test))
    fmt.Printf("Length of %q is %d\n\n", result, len(result))   
}

Ви також можете знайти це на майданчику Go lang .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.