2015-10-17 3 views
5

क्या जावा में SPACE जैसे एकल वर्णों के लिए कोई स्थिरांक शामिल है?जावा स्पेस जैसे किसी भी वर्ण के लिए स्थिरांक परिभाषित करता है?

स्ट्रिंग मैनिप्लेशंस करते समय यूनिकोड से लिया गया नाम आसान होगा।

मैं यह चाहता हूँ:

String musician = "Lisa" + Character.SPACE + "Coleman" ; 

... बल्कि इस से:

String musician = "Lisa" + " " + "Coleman" ; 

(java.lang.Character वर्ग के साथ भ्रमित होने की नहीं)

कुछ भी नहीं जावा के साथ बंडल हैं, तो विकल्प?

+0

मुझे लगता है कि इस exaplain हैं: http://stackoverflow.com/a/21437830/460557 –

+0

किसी ने यह किया: http://blog.code-cop.org/2007/08/java-unicode-constants.html यह सुनिश्चित नहीं है कि ** ** ** ** इस तरह नामित यूनिकोड चरित्र कितना उपयोगी है। मेरा सुझाव है कि आप केवल कुछ * विशेष * जिन्हें आप चाहते हैं (और नहीं, अंतरिक्ष विशेष नहीं है) का नाम दें। – Andreas

उत्तर

7

ऐसा कोई स्थिर नहीं है, और अच्छे कारणों से, आईएमओ।

अपने उदाहरण में पहले स्थान पर निरंतर उपयोग क्यों करें?

String musician = "Lisa" + Character.SPACE + "Coleman" ; 

से

String musician = "Lisa Coleman"; 

या यहां तक ​​कि अधिक से

String musician = "Lisa" + ' ' + "Coleman"; 

तो मुझे लगता है कि यह पठनीयता कारणों के लिए नहीं है कम पढ़ी जा सकती है।

मुझे लगता है कि आप स्थिर कोड चाहते हैं कि कोड के कई हिस्सों में खुद को दोहराने से बचें। लेकिन ' ' के बजाय Character.SPACE का उपयोग करके हर जगह कम पुनरावृत्ति नहीं होती है। केवल अधिक verbose और कम पठनीय कोड के लिए।

मुझे लगता है कि आप एक ही स्थान पर निरंतर मूल्य को बदलने में सक्षम होना चाहते हैं, और इसे हर जगह बदल दिया है। लेकिन फिर अंतर्निहित Character.SPACE निरंतर उपयोग करने से आप उस लक्ष्य को प्राप्त करने की अनुमति नहीं देंगे। तुम अब भी अपने स्वयं के निरंतर की आवश्यकता होगी, और उसका नाम नहीं होना चाहिए क्या मूल्य है, लेकिन क्या मूल्य के लिए है:

private static final char FIRST_NAME_LAST_NAME_SEPARATOR = ' '; 

अब, वहाँ है कि निरंतर उपयोग करने के लिए एक अच्छा कारण है: अगर आप बाद में किसी स्थान के बजाय एक टैब का उपयोग करने का निर्णय लेते हैं, आप निरंतर के मान को बदल सकते हैं और अपने सभी कोड को पुन: संकलित कर सकते हैं।

+2

क्या आपका मतलब 'लिसा कोलमन' या 'लिसा कोलमन' या 'लिसा कोलमन' था? एक में एक ही स्थान है, दूसरा एक डबल, और दूसरा एक [गैर-ब्रेकिंग स्पेस] (https://en.wikipedia.org/wiki/Non-breaking_space)। शायद आपको ऐसी अस्पष्टता से कभी जला दिया नहीं गया है, लेकिन मेरे पास है। –

+0

फिर अपने स्वयं के निरंतर परिभाषित करें, क्योंकि मेरा उत्तर बताता है। या एक विधि लिखें जो आपके द्वारा विभाजित विभाजक के साथ नाम भागों को जोड़ती है। समस्या कहाँ हे? –

+1

क्योंकि यह आपके अपने [डेऑफविक] को परिभाषित करने के लिए मूर्खतापूर्ण होगा (http://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html) निरंतर या [महीना] (http: // docs.oracle.com/javase/8/docs/api/java/time/Month.html) स्थिर अगर कोई पहले ही परिभाषित किया गया था। इसी प्रकार यूनिकोड वर्णों के लिए स्थिरांक को परिभाषित करने के लिए। –

1

जावा में बैकस्पेस (\ r द्वारा प्रतिनिधित्व) जैसे "अवांछित" वर्णों को प्रतिस्थापित करने के लिए उपयोग किए जाने वाले वर्ण स्थिरांक की एक सूची है। पूरी सूची https://docstore.mik.ua/orelly/java-ent/jenut/ch10_05.htm में पाया जा सकता हालांकि यहां कुछ उदाहरण है:

\\  Backslash 
\r  Carriage Return 
\"  Double Quote (same for single Quote) 
\n  Newline 

आप अंदाजा हो। आशा है कि यह वही है जो आप खोज रहे थे क्योंकि आपने अपने शीर्षक में चरित्र स्थिरांक का उल्लेख किया था।

संपादित करें: चरित्र स्थिरांक का उपयोग करते समय अक्षरों को डबल कोट्स के बजाय सिंगल कोट्स के साथ घिरा हुआ है। दो (या अधिक) अक्षरों के लंबे होने के बावजूद वे स्ट्रिंग के बजाए एक वर्ण या एकल बाइनरी अंक को इंगित करते हैं।

नोट: java.awt.event.KeyListener में 'एंटर' वर्ण की तुलना करने का प्रयास करते समय कुंजी टाइपेड \n चरित्र निरंतर \r वर्ण निरंतर के बजाय उपयोगकर्ता होना चाहिए।

1

वहाँ अपाचे कॉमन्स में कुछ

org.apache.commons.lang3.StringUtils.SPACE

more

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