2017-03-28 5 views
12

मैं तीन भाषाओं (सी ++, पायथन और गोलांग) के बीच संगत होने के लिए केस फोल्डिंग प्राप्त करने की कोशिश कर रहा हूं क्योंकि मुझे यह जांचने में सक्षम होना चाहिए कि कोई स्ट्रिंग सहेजी गई है या नहीं, चाहे कोई भी भाषा चाहे।गोलांग कॉम्प्लेक्स फोल्ड ग्रुसेन

एक उदाहरण समस्याग्रस्त शब्द जर्मन शब्द "ग्रुसेन" है जो अपरकेस में "ग्रुसेन" है (ध्यान दें कि 'ß' दो अक्षर 'एसएस' बन जाता है)।

  • सी ++ में अच्छी तरह से काम करता है :: बढ़ावा का उपयोग कर लोकेल text conversion docs
  • अजगर 3 भी str.casefold के माध्यम से काम करता है() casefold docs
  • हालांकि, Golang उचित मामले तह इसके लिए कोई तरीका है करने के लिए प्रतीत नहीं होता। golang playground example

वहाँ किसी तरह यह है कि मैं याद कर रहा हूँ, या unicode's documentation के अंत में इस बग golang में पाठ रूपांतरण के सभी उपयोगों पर लागू होता है क्या करना है? यदि हां, तो क्या यह मेरे विकल्प को केगो में लिखने के अलावा फोल्डिंग के मामले में हैं?

+0

दिया गया गोलांग पूंजीकरण समारोह को 'func (_case int, r rune, caseRange [] CaseRange) rune {' के रूप में कई नियमों को वापस करने के लिए भी संभव है। – zerkms

+0

हाँ, यही वह है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं। ऐसी भाषाएं हैं जहां केसिंग फोल्डिंग/पूंजीकरण के माध्यम से एक "रन" दो हो सकता है, इसलिए गोलांग में ऐसी चीज को संभालने का एक तरीका होना चाहिए। –

+1

यदि आप कोई समस्या बनाते हैं तो क्या आप यहां एक लिंक पोस्ट कर सकते हैं (क्योंकि मुझे नहीं लगता कि इसे ठीक से बदलने के लिए कुछ है) – zerkms

उत्तर

6

उन्नत (यूनिकोड-सक्षम) पाठ प्रसंस्करण जाओ stdlib का हिस्सा नहीं है, तीसरे पक्ष के संकुल golang.org/x/text/ umbrella तहत ¹ और के एक मेजबान ("धन्य") के रूप में मौजूद है।

के रूप में शॉन खुद से पता लगा, एक कर सकते हैं

import (
    "golang.org/x/text/cases" 
) 

c := cases.Fold() 
c.String("grüßen") 

"grüssen" करने के लिए वापस।


कि ¹ है क्योंकि जो कुछ भी stdlib में भेज दिया जाता है, Go 1 compatibility promise, करने के लिए और समय में 1 जाओ विषय भेज दिया गया कुछ कार्यक्षमता या उपलब्ध नहीं था अधूरा था या उसके API थे में प्रवाह आदि है इसलिए कोर को कोर को परिपक्व होने के लिए रखा गया था।

+0

सी। स्ट्रिंग ("ग्रुसेन") वास्तव में ग्रुसेन लौटता है, न कि ग्रुसेन। –

+0

@ शॉन-ब्लेक्सले, सुधार के लिए धन्यवाद! – kostix