2014-10-02 6 views
22

यदि मेरे पास स्ट्रिंग "12121211122" है और मैं अंतिम 3 वर्ण (उदा। "122") प्राप्त करना चाहता हूं, तो क्या यह संभव है? मैंने string पैकेज में देखा है और getLastXcharacters जैसी कुछ भी नहीं देखी है।गोलांग स्ट्रिंग के अंतिम एक्स अक्षर कैसे प्राप्त करें?

उत्तर

51

आप अंतिम तीन बाइट प्राप्त करने के लिए एक स्ट्रिंग पर slice expression का उपयोग कर सकते हैं।

s  := "12121211122" 
first3 := s[0:3] 
last3 := s[len(s)-3:] 

या आप की तरह कुछ कर सकते हैं आप यूनिकोड उपयोग कर रहे हैं:

s  := []rune("世界世界世界") 
first3 := string(s[0:3]) 
last3 := string(s[len(s)-3:]) 

चेक Strings, bytes, runes and characters in Go और Slice Tricks

+0

धन्यवाद। पहले 3 विशेषताओं को प्राप्त करने के बारे में क्या? – sourcey

+0

@ स्रोत ने उत्तर अपडेट किया। – OneOfOne

+0

@tommywild http://blog.golang.org/slices से: स्ट्रिंग्स वास्तव में बहुत ही सरल हैं: वे भाषा से थोड़ा अतिरिक्त वाक्य रचनात्मक समर्थन के साथ बाइट्स *** के केवल *** पढ़ने-केवल स्लाइस हैं। – OneOfOne

9

उत्तर "वर्ण" से आपका क्या मतलब है इस पर निर्भर करता है। आप तो बाइट्स मतलब हैं:

s := "12121211122" 
lastByByte := s[len(s)-3:] 

आप एक UTF-8 एन्कोडेड स्ट्रिंग में runes मतलब है, तो:

s := "12121211122" 
j := len(s) 
for i := 0; i < 3 && j > 0; i++ { 
    _, size := utf8.DecodeLastRuneInString(s[:j]) 
    j -= size 
} 
lastByRune := s[j:] 

तुम भी एक [] रूण के लिए स्ट्रिंग को बदलने और रूण पर काम कर सकते हैं टुकड़ा, लेकिन यह स्मृति आवंटित करता है।

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