आप \s
जावा में अपने स्वयं के मूल चरित्र सेट पर सफेद स्थान का मिलान करने के लिए उपयोग नहीं कर सकते हैं , क्योंकि जावा यूनिकोड सफेद अंतरिक्ष संपत्ति का समर्थन नहीं करता है - भले ही ऐसा करने के लिए यूटीएस # 18 के आरएल 1.2 को पूरा करने की सख्त आवश्यकता है ! इसके पास जो है वह मानकों के अनुरूप नहीं है, अफसोस।
यूनिकोड 26 कोड बिंदुओं को परिभाषित करता है \p{White_Space}
: उनमें से 20 विभिन्न प्रकार के \pZ
GeneralCategory = विभाजक हैं , और शेष 6 \p{Cc}
GeneralCategory = Control हैं ।
श्वेत स्थान एक बहुत ही स्थिर संपत्ति है, और वे लगभग हमेशा के लिए रहे हैं। फिर भी, जावा के पास ऐसी कोई संपत्ति नहीं है जो इन के लिए यूनिकोड मानक के अनुरूप हो, इसलिए आपको इसके बजाय कोड का उपयोग करना होगा:
String whitespace_chars = "" /* dummy empty string for homogeneity */
+ "\\u0009" // CHARACTER TABULATION
+ "\\u000A" // LINE FEED (LF)
+ "\\u000B" // LINE TABULATION
+ "\\u000C" // FORM FEED (FF)
+ "\\u000D" // CARRIAGE RETURN (CR)
+ "\\u0020" // SPACE
+ "\\u0085" // NEXT LINE (NEL)
+ "\\u00A0" // NO-BREAK SPACE
+ "\\u1680" // OGHAM SPACE MARK
+ "\\u180E" // MONGOLIAN VOWEL SEPARATOR
+ "\\u2000" // EN QUAD
+ "\\u2001" // EM QUAD
+ "\\u2002" // EN SPACE
+ "\\u2003" // EM SPACE
+ "\\u2004" // THREE-PER-EM SPACE
+ "\\u2005" // FOUR-PER-EM SPACE
+ "\\u2006" // SIX-PER-EM SPACE
+ "\\u2007" // FIGURE SPACE
+ "\\u2008" // PUNCTUATION SPACE
+ "\\u2009" // THIN SPACE
+ "\\u200A" // HAIR SPACE
+ "\\u2028" // LINE SEPARATOR
+ "\\u2029" // PARAGRAPH SEPARATOR
+ "\\u202F" // NARROW NO-BREAK SPACE
+ "\\u205F" // MEDIUM MATHEMATICAL SPACE
+ "\\u3000" // IDEOGRAPHIC SPACE
;
/* A \s that actually works for Java’s native character set: Unicode */
String whitespace_charclass = "[" + whitespace_chars + "]";
/* A \S that actually works for Java’s native character set: Unicode */
String not_whitespace_charclass = "[^" + whitespace_chars + "]";
अब आप whitespace_charclass + "+"
अपने पैटर्न के रूप में उपयोग कर सकते हैं replaceAll
।
सॉरी 'बाउट दैट ऑल। जावा के रेगेक्स अपने मूल चरित्र सेट पर बहुत अच्छी तरह से काम नहीं करते हैं, और इसलिए आपको वास्तव में उन्हें काम करने के लिए विदेशी हुप्स के माध्यम से कूदना होगा।
और अगर आपको लगता है कि सफेद स्थान खराब है, तो आपको यह देखना चाहिए कि आपको प्राप्त करने के लिए क्या करना है \w
और \b
अंत में ठीक से व्यवहार करना है!
हाँ, यह संभव है, और हाँ, यह एक नासमझ गड़बड़ है। वह धर्मार्थ भी हो रहा है। जावा के लिए एक मानक-अनुकूल रिजेक्स लाइब्रेरी पाने का सबसे आसान तरीका आईसीएन के सामान पर जेएनआई है। यह वही है जो Google Android के लिए करता है, क्योंकि OraSun की माप नहीं होती है।
यदि आप ऐसा नहीं करना चाहते हैं, लेकिन फिर भी जावा के साथ रहना चाहते हैं, तो मेरे पास एक फ्रंट-रेगेक्स रि-राइटिंग लाइब्रेरी है, जिसमें मैंने लिखा है कि जावा के पैटर्न को ठीक करता है, कम से कम उन्हें यूटीएस में RL1.2a की आवश्यकताओं के अनुरूप पाने के लिए। # 18, यूनिकोड रेगुलर एक्सप्रेशंस ।