【问题标题】:How to remove the last character of a string in Golang?如何删除Golang中字符串的最后一个字符?
【发布时间】:2011-12-31 17:13:06
【问题描述】:

我想删除字符串的最后一个字符,但在此之前我想检查最后一个字符是否为“+”。如何做到这一点?

【问题讨论】:

标签: string go


【解决方案1】:

以下是删除尾随加号的几种方法。

package main

import (
    "fmt"
    "strings"
)

func TrimSuffix(s, suffix string) string {
    if strings.HasSuffix(s, suffix) {
        s = s[:len(s)-len(suffix)]
    }
    return s
}

func main() {
    s := "a string ++"
    fmt.Println("s: ", s)

    // Trim one trailing '+'.
    s1 := s
    if last := len(s1) - 1; last >= 0 && s1[last] == '+' {
        s1 = s1[:last]
    }
    fmt.Println("s1:", s1)

    // Trim all trailing '+'.
    s2 := s
    s2 = strings.TrimRight(s2, "+")
    fmt.Println("s2:", s2)

    // Trim suffix "+".
    s3 := s
    s3 = TrimSuffix(s3, "+")
    fmt.Println("s3:", s3)
}

输出:

s:  a string ++
s1: a string +
s2: a string 
s3: a string +

【讨论】:

    【解决方案2】:

    根据@KarthikGR 的回答,添加了以下示例:

    https://play.golang.org/p/ekDeT02ZXoq

    package main
    
    import (
        "fmt"
        "strings"
    )
    
    func main() {
        fmt.Println(strings.TrimSuffix("Foo++", "+"))
    }
    

    返回:

    Foo+
    

    【讨论】:

      【解决方案3】:

      没有内置方式。但是手动操作很简单。

      s := "mystring+"
      sz := len(s)
      
      if sz > 0 && s[sz-1] == '+' {
          s = s[:sz-1]
      }
      

      【讨论】:

      • 不适用于 unicode,例如“mystringƂ”play.golang.org/p/F0j19ceGo75 我知道最初的问题要求删除“+”,但我来这里是在谷歌上搜索一般答案
      猜你喜欢
      • 2019-11-22
      • 2021-12-11
      • 2011-11-18
      • 2011-12-15
      • 1970-01-01
      • 2016-04-16
      • 2020-03-12
      • 2017-08-19
      相关资源
      最近更新 更多