java - Unicode Regex in Scala REPL -


मुझे यूनिकोड पत्र ( \ p {L} ) के शब्द पता लगाना है।

स्काला का आरईपीएल निम्नलिखित कथन के लिए false वापस देता है, जबकि जावा में यह true है (जो सही व्यवहार है):

Java.util.regex.Pattern.compile ("\\ p {L}")। मैटचर ("ए")। मैचों ()

जावा और स्कला दोनों JRE में चल रहे हैं 1.7:

System.getProperty ("java.version") देता है "1.7.0_60-ea"

क्या इसके लिए कारण हो सकता है?

संभवतः दुभाषिए के भीतर उपयोग किए जाने वाले गैर-संगत वर्ण एन्कोडिंग । उदाहरण के लिए, यहां मेरा आउटपुट है:

  scala & gt; System.getProperty ("file.encoding") res0: स्ट्रिंग = UTF-8 स्केल & gt; Java.util.regex.Pattern.compile ("\\ p {L}")। मैटचर ("ए")। मैचों () res1: बूलियन = सच  

तो समाधान है scala के साथ -dfile.encoding = UTF-8 को चलाने के लिए। नोट, हालांकि, (जो थोड़ी पुरानी है):

स्काला के लिए डिफ़ॉल्ट वर्ण एन्कोडिंग सेट करने के लिए केवल एक ही विश्वसनीय तरीके से आपके आवेदन को चलाने से पहले $ JAVA_OPTS सेट करना है:

$ JAVA_OPTS = "- Dfile.encoding = utf8" scala [...] बस scala -file.encoding = utf8 सेट करने की कोशिश कर रहा है ऐसा करने लगते हैं [...]


यहां मामला नहीं था, लेकिन यह भी हो सकता है: वैकल्पिक रूप से, आपका "एक" चिह्न "a" द्वारा पीछा किया जा सकता है, जैसे:

  स्कला & gt; Println ("a \ u0308") स्केल & gt; Java.util.regex.Pattern.compile ("\\ p {L}")। मैटचर ("a \ u0308") मैचों () res1: बूलियन = गलत  

यह है कभी-कभी कुछ प्रणालियों पर एक समस्या है, जो कि डायैरिटिक्स बनाते हैं (मुझे लगता है कि ओएस एक्स एक है, कम से कम कुछ संस्करणों में)। अधिक जानकारी के लिए,।


Comments

Popular posts from this blog

scala - Play Framework - how to bind form to a session field -

c++ - Why does Visual Studio Release build break on non-executing code line -

Firefox reacting to JQuery setTimeout that doesn't apply -