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
Post a Comment