/ / जावा बनाम जावास्क्रिप्ट विभाजन व्यवहार - जावास्क्रिप्ट, जावा, विभाजन

जावा बनाम जावास्क्रिप्ट विभाजन व्यवहार - जावास्क्रिप्ट, जावा, विभाजित

विभाजन की कार्यक्षमता जावा और जावास्क्रिप्ट के बीच भिन्न प्रतीत होती है।

मुझे निश्चित रूप से एक निश्चित नियमित मैच की जरूरत नहीं हैअभिव्यक्ति मानदंड, या उपयोग लुकहेड आधारित रेगेक्स। मेरी समस्या विभाजित रेगेक्स के अंतिम मिलान के बाद फंसे हुए खाली मैचों के साथ रहती है (जो कि चरित्र का एक सरल सेट है और अभिव्यक्ति नहीं है)।

नीचे दिए गए आउटपुट का एक उदाहरण है जिसे मैं प्राप्त करने की कोशिश कर रहा हूं और वास्तव में मुझे क्या मिल रहा है।

जावा

("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~")

/* results with an array of length 8 */ (java.lang.String[]) [, , , A, B, C, D, E]

जावास्क्रिप्ट

 "~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~".split("~#~")
/* results with an array of length 11 */ ["", "", "", "A", "B", "C", "D", "E", "", "", ""]

मैं वास्तव में "इसके लिए एक अच्छी व्याख्या पर अपने हाथ नहीं डाल सकता हूं क्योंकि मैं एक जावा एप्लिकेशन के साथ काम कर रहा हूं और विभाजन मुझे परेशान कर रहा है, मैं जावास्क्रिप्ट में भी वही परिणाम चाहता हूं। मुझे यह कैसे मिल सकता है?"

उत्तर:

उत्तर № 1 के लिए 30

जावदोक पर split(String regex):

यह विधि इस तरह से काम करती है जैसे कि दिए गए एक्सप्रेशन और शून्य के सीमा तर्क के साथ दो-तर्क विभाजन विधि को लागू करते हैं। इसलिए खाली स्ट्रिंग अनुगामी परिणामी सरणी में शामिल नहीं हैं।

जावदोक पर split(String regex, int limit):

यदि n गैर-सकारात्मक है तो पैटर्न होगाजितनी बार संभव हो उतनी बार लागू किया जाता है और सरणी में कोई भी लंबाई हो सकती है। यदि n शून्य है, तो पैटर्न को यथासंभव कई बार लागू किया जाएगा, सरणी में कोई भी लंबाई हो सकती है, और खाली तारों को पीछे छोड़ दिया जाएगा।

इसलिए... split("~#~", -1) चाल करना चाहिए


उत्तर के लिए 7 № 2

जावा के विभाजन () प्रलेखन में स्पष्ट रूप से उल्लेख किया गया है कि अनुगामी खाली तारों को शामिल नहीं किया जाएगा।

यह विधि दो-तर्क स्प्लिट विधि के साथ आविष्कार करके काम करती है दी गई अभिव्यक्ति और शून्य की सीमा तर्क। खाली पीछे हटना इसलिए परिणामस्वरूप सरणी में स्ट्रिंग शामिल नहीं हैं।

लेकिन आप इसे हासिल कर सकते हैं

("~#~~#~~#~A~#~B~#~C~#~D~#~E~#~~#~~#~").split("~#~" , -1)

जो एक अतिभारित विधि है


उत्तर № 3 के लिए 1

जावा "रों split() दस्तावेज़ीकरण में स्पष्ट रूप से उल्लेख किया गया है कि अनुगामी खाली तार होगा नहीं शामिल हो ।

यह विधि दो-तर्क विभाजन विधि को लागू करके मानो काम करती है दी गई अभिव्यक्ति और शून्य का एक सीमा तर्क। पीछे खाली तार परिणामी सरणी में शामिल नहीं हैं.