2011-12-31 17 views
23

मैं स्ट्रिंग के आखिरी चरित्र को हटाना चाहता हूं, लेकिन ऐसा करने से पहले मैं यह जांचना चाहता हूं कि अंतिम अक्षर "+" है या नहीं। यह कैसे किया जा सकता है?स्ट्रिंग के अंतिम अक्षर को हटाएं

उत्तर

28

पीछे प्लस साइन को हटाने के कई तरीके यहां दिए गए हैं।

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 + 
8

कोई अंतर्निहित तरीका नहीं है। लेकिन मैन्युअल रूप से करना मुश्किल है।

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

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

अंतर्निहित समारोह अब उपलब्ध है। http://golang.org/pkg/strings/#TrimSuffix

+2

अद्यतन के लिए धन्यवाद, इसे सही के रूप में चिह्नित किया जाना चाहिए। – alfonsodev

+0

'Foo ++' 'Foo' बन जाएगा, इसलिए यह TrimSuffix के साथ गलत है: केवल अंतिम वर्ण हटा दिया जाना चाहिए। –

संबंधित मुद्दे