python
  • string
  • python-3.x
  • go
  • 2015-10-15 5 views 21 likes 
    21

    अजगर तो जैसे तार गुणा कर सकते हैं:क्या गोलांग पाइथन जैसे तारों को गुणा कर सकता है?

    Python 3.4.3 (default, Mar 26 2015, 22:03:40) 
    [GCC 4.9.2] on linux 
    Type "help", "copyright", "credits" or "license" for more information. 
    >>> x = 'my new text is this long' 
    >>> y = '#' * len(x) 
    >>> y 
    '########################' 
    >>> 
    

    किसी भी तरह बराबर कर Golang कर सकते हैं?

    उत्तर

    38

    इसमें ऑपरेटर के बजाय एक फ़ंक्शन है, strings.Repeat। यहाँ अपने अजगर उदाहरण है, जो आप चला सकते हैं here के एक बंदरगाह है:

    package main 
    
    import (
        "fmt" 
        "strings" 
        "unicode/utf8" 
    ) 
    
    func main() { 
        x := "my new text is this long" 
        y := strings.Repeat("#", utf8.RuneCountInString(x)) 
        fmt.Println(y) 
    } 
    

    ध्यान दें कि मैं utf8.RuneCountInString(x) बजाय len(x) का उपयोग किया है; पूर्व गणना "रन" (यूनिकोड कोड पॉइंट्स), जबकि बाद वाले बाइट्स की गणना करता है। "my new text is this long" के मामले में, अंतर कोई फर्क नहीं पड़ता क्योंकि सभी पात्र केवल एक बाइट हैं, लेकिन यह मतलब है कि आप क्या मतलब है निर्दिष्ट करने की आदत में जाना अच्छा है।

    (अजगर 2, सादे तार और runes यूनिकोड तार पर (u'...') अजगर 3 में, सादे तार यूनिकोड तार और len मायने रखता है runes हैं पर len मायने रखता है बाइट्स में;। यदि आप बाइट्स गणना करना चाहते हैं, तो आप करने के लिए है पहले स्ट्रिंग को bytearray में एन्कोड करें। जाओ में, केवल एक ही प्रकार की स्ट्रिंग है और आपको कनवर्ट करने की आवश्यकता नहीं है, लेकिन आपको उस फ़ंक्शन को चुनना होगा जो आपके इच्छित सेमेन्टिक्स से मेल खाता है।)

    +1

    महत्वपूर्ण, महान उत्तर में रनों को समझना। – cerberos

    7

    हां, यह कर सकता है हालांकि, एक ऑपरेटर के साथ नहीं बल्कि मानक पुस्तकालय में एक समारोह के साथ।

    यह एक साधारण पाश के साथ बहुत आसान होगा, लेकिन मानक पुस्तकालय आपको इसका एक अत्यधिक अनुकूलित संस्करण प्रदान करता है: strings.Repeat()

    आपका उदाहरण:

    x := "my new text is this long" 
    y := strings.Repeat("#", len(x)) 
    fmt.Println(y) 
    

    Go Playground पर यह कोशिश करो।

    नोट्स: len(x) स्ट्रिंग के "बाइट्स" लंबाई (बाइट्स की संख्या) है (यूटीएफ -8 एन्कोडिंग में, इस प्रकार गो मेमोरी में तारों को स्टोर करता है)। यदि आप पात्रों की संख्या (रन) चाहते हैं, तो utf8.RuneCountInString() का उपयोग करें।

    1

    यूप। तार पैकेज में Repeat function है।

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