2011-12-31 83 views
23

Tôi muốn xóa ký tự cuối cùng của chuỗi, nhưng trước khi tôi làm như vậy, tôi muốn kiểm tra xem ký tự cuối cùng có phải là dấu "+" hay không. Điều này có thể giải quyết như thế nào?Xóa ký tự cuối cùng của chuỗi

Trả lời

28

Dưới đây là một số cách để xóa dấu cộng (các) dấu.

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) 
} 

Output:

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

Không có cách dựng sẵn. Nhưng nó tầm thường để làm thủ công.

s := "mystring+" 
sz := len(s) 

if sz > 0 && s[sz-1] == '+' { 
    s = s[:sz-1] 
} 
36

chức năng Builtin có sẵn ngay bây giờ. http://golang.org/pkg/strings/#TrimSuffix

+2

Cảm ơn bạn đã cập nhật, điều này phải được đánh dấu là chính xác. – alfonsodev

+0

'Foo ++' sẽ trở thành 'Foo', vì vậy điều này không chính xác với TrimSuffix: chỉ có ký tự cuối cùng cần được loại bỏ. –

Các vấn đề liên quan