आप वैध जावा पहचान में बदल यादृच्छिक तार परिवर्तित करना चाहते हैं।
पहचानकर्ता: the Java Language Specification, §3.8 के अनुसार, एक पहचानकर्ता की परिभाषा इस प्रकार है
IdentifierChars नहीं बल्कि एक कीवर्ड या BooleanLiteral या NullLiteral
IdentifierChars:
JavaLetter
IdentifierChars JavaLetterOrDigit
JavaLetter:
किसी भी यूनिकोड वर्ण एक जावा पत्र
JavaLetterOrDigit है कि:
किसी भी यूनिकोड वर्ण है कि एक जावा पत्र या अंकों है
ए आपको करना होगा, फिर, अपने इनपुट के माध्यम से कदम उठाएं और किसी भी अमान्य चरित्र को वैध के साथ प्रतिस्थापित करें (उदा। अंडरस्कोर) या इसे पूरी तरह से हटा दें। जावा Character
कक्षा में विधियों को भी प्रदान करता है जो आपको बताता है कि कोई दिया गया वर्ण जावालेटर या जावालेटरऑरडिजिट: isJavaIdentifierStart()
और isJavaIdentifierPart
है। (यह अमान्य वर्णों को बाहर करने की कोशिश करने से कहीं अधिक आसान है क्योंकि वैध वर्णों का सेट छोटा है और अमान्य वर्णों का सेट बहुत बड़ा है।)
अंत में, यह सुनिश्चित करना याद रखें कि आपका परिणाम अंकों से शुरू नहीं होता है एक कीवर्ड या शाब्दिक के साथ नहीं छोड़ा। यदि टकराव संभव और अवांछित हैं, तो आप अनन्य मूल्य प्राप्त करने के लिए आवश्यकतानुसार अपने परिणामों में संख्याएं जोड़ सकते हैं।
इनपुट स्ट्रिंग की संभावित सामग्री क्या हैं? बस अल्फान्यूमेरिक्स, विराम चिह्न और रिक्त स्थान? यूनिकोड में सबकुछ? – Pops
इनपुट पर नियम लागू किए बिना, मुझे लगता है कि आपको टकराव मिलेगा (यानी कई से एक मैपिंग)। आपके आवेदन के आधार पर, इससे कोई फर्क नहीं पड़ता या इससे कोई फर्क नहीं पड़ता। – jpm
यदि आप जावा परिवर्तनीय नाम के लिए एक वैध वर्ण है तो आप स्ट्रिंग के माध्यम से लूपिंग और स्ट्रिंगबिल्डर में शामिल होने का प्रयास कर सकते हैं। आपके पास जो चुनौती हो सकती है वह डुप्लिकेट वैरिएबल है, इसलिए हो सकता है कि आप जो भी इस्तेमाल करते हैं उसका ट्रैक रखें और यदि आवश्यक हो तो संख्याएं संलग्न करें। – JustinKSU