दिलचस्प पोस्ट
प्रोटोटाइप के तरीकों को असाइन करना * अंदर * कन्स्ट्रक्टर फ़ंक्शन – क्यों नहीं? MySQL में प्राथमिक कुंजी निकालें स्विचर 3 में चयनकर्ता जावास्क्रिप्ट: स्ट्रिंग में सबसे लंबा शब्द ढूंढें स्ट्रिंग के लिए अवधि नक्शा एपीआई v2 के साथ मैपफ्रैग्मेंट प्रोग्रामेटिक रूप से आरंभ करें कैसे कस्टम इटरेटर और const_iterators सही ढंग से लागू करने के लिए? डीबग.कीस्टोर फ़ाइल से एमडी 5 कैसे प्राप्त करें? एंड्रॉइड बटन ऑनक्लिक जब केस वर्ग के पास केवल एक फ़ील्ड होता है तो क्लास के मामले में जेसन को कैसे चालू करें जब तक उपयोगकर्ता स्क्रॉल नहीं करते, तो अतिप्रवाह डिवा को नीचे तक स्क्रॉल रखें अजाक्स के साथ उच्चचरट में डेटा लोड करें एमएसवीसी __VA_ARGS__ का विस्तार नहीं करता है जावास्क्रिप्ट फ़ंक्शन के अंदर "इस पर लौटें" क्या करता है? PHP में वास्तव में PATH_INFO क्या है?

कुछ विभाजक के साथ स्ट्रिंग कैसे विभाजित किया जा सकता है लेकिन जावा में उस विभाजक को हटाए बिना?

मुझे विभाजन String में समस्या का सामना करना पड़ रहा है।

मैं String को कुछ विभाजक के साथ विभाजित करना चाहता हूं लेकिन उस विभाजक को खोने के बिना

जब हम जावा में somestring.split(String separator) विधि का उपयोग करते हैं, तो यह String को विभाजित करता है लेकिन String से विभाजक भाग को हटा देता है। मैं ऐसा नहीं करना चाहता हूँ

मुझे नीचे दिए गए परिणाम चाहिए:

 String string1="Ram-sita-laxman"; String seperator="-"; string1.split(seperator); 

आउटपुट:

 [Ram, sita, laxman] 

लेकिन मैं इसके बजाय नीचे की तरह एक परिणाम चाहता हूँ:

 [Ram, -sita, -laxman] 

क्या इस तरह से उत्पादन प्राप्त करने का कोई तरीका है?

Solutions Collecting From Web of "कुछ विभाजक के साथ स्ट्रिंग कैसे विभाजित किया जा सकता है लेकिन जावा में उस विभाजक को हटाए बिना?"

 string1.split("(?=-)"); 

यह काम करता है क्योंकि split वास्तव में एक नियमित अभिव्यक्ति लेता है जो वास्तव में आप देख रहे हैं वह "शून्य चौड़ाई वाला सकारात्मक रूप" है

मुझे और अधिक समझने में खुशी होगी लेकिन मेरी बेटी चाय पार्टी खेलना चाहती है। 🙂

संपादित करें: वापस!

इसे समझाने के लिए, मैं आपको पहले एक अलग split कार्रवाई दिखाऊंगा:

 "Ram-sita-laxman".split(""); 

यह आपकी स्ट्रिंग को हर शून्य-लंबाई स्ट्रिंग पर विभाजित करता है। प्रत्येक चरित्र के बीच एक शून्य-लंबाई स्ट्रिंग है। इसलिए, परिणाम यह है:

 ["", "R", "a", "m", "-", "s", "i", "t", "a", "-", "l", "a", "x", "m", "a", "n"] 

अब, मैं अपने नियमित अभिव्यक्ति ( "" ) को केवल शून्य-लंबाई वाले तारों के साथ बदलता हूं यदि वे एक डैश द्वारा पीछा करते हैं

 "Ram-sita-laxman".split("(?=-)"); ["Ram", "-sita", "-laxman"] 

उस उदाहरण में ?= अर्थ है "लुकआहेड" अधिक विशेष रूप से, इसका अर्थ " सकारात्मक नक्षत्र" है क्यों "सकारात्मक"? क्योंकि आप भी नकारात्मक लुकआउट ( ?! ) कर सकते हैं जो प्रत्येक शून्य-लंबाई वाली स्ट्रिंग पर विभाजित होगा जो एक डैश द्वारा नहीं किया जाता है:

 "Ram-sita-laxman".split("(?!-)"); ["", "R", "a", "m-", "s", "i", "t", "a-", "l", "a", "x", "m", "a", "n"] 

आप भी सकारात्मक देख सकते हैं ( ?<= ) जो प्रत्येक शून्य-लंबाई वाली स्ट्रिंग पर विभाजित होगा जो कि डैश से पहले है:

 "Ram-sita-laxman".split("(?<=-)"); ["Ram-", "sita-", "laxman"] 

अंत में, आप भी नकारात्मक नजरिए ( ?<! ) कर सकते हैं जो प्रत्येक शून्य-लंबाई वाली स्ट्रिंग पर विभाजित होगा जो एक डैश से पहले नहीं है :

 "Ram-sita-laxman".split("(?<!-)"); ["", "R", "a", "m", "-s", "i", "t", "a", "-l", "a", "x", "m", "a", "n"] 

इन चार अभिव्यक्तियों को सामूहिक रूप से रूपों के रूप में जाना जाता है।

बोनस: उन्हें एक साथ लाना

मैं हाल ही में एक ऐसे उदाहरण को दिखाना चाहता था जो दो तरह के रूपों को जोड़ता है। मान लीजिए आप अपने कैकपैलिक कैस पहचानकर्ता को अपनी टोकन में विभाजित करना चाहते हैं:

 "MyAwesomeClass" => ["My", "Awesome", "Class"] 

आप इस नियमित अभिव्यक्ति का उपयोग करके इसे पूरा कर सकते हैं:

 "MyAwesomeClass".split("(?<=[az])(?=[AZ])"); 

यह हर शून्य-लंबाई वाली स्ट्रिंग पर विभाजित होता है जो पहले से कम केस अक्षर ( (?<=[az]) (?=[AZ]) ) और उसके बाद एक ऊपरी कैस अक्षर ( (?=[AZ]) ) के द्वारा होता है।

यह तकनीक भी ऊंट के साथ काम करता हैजिस पहचानकर्ता

यह थोड़ा ढीला है, लेकिन आप एक प्रतिस्थापन समारोह का उपयोग कर एक डमी विभाजक परिचय कर सकते हैं। मैं जावा विधियों को नहीं जानता, लेकिन सी # में ऐसा कुछ हो सकता है:

 string1.Replace("-", "#-").Split("#"); 

बेशक, आपको एक डमी सेपरेटर चुनने की आवश्यकता होती है जो स्ट्रिंग में कहीं और न होने की गारंटी है।

ऐसा करने का एक तरीका आपकी स्ट्रिंग को विभाजित करना है, फिर पहले विभाजित किए गए प्रत्येक निकाले स्ट्रिंग की शुरुआत में अपने विभाजक को जोड़ें।

 seperator="-"; String[] splitstrings = string1.split(seperator); for(int i=1; i<splitstring.length;i++) { splitstring[i] = seperator + splitstring[i]; } 

यह लिडाराइडर के उत्तर के लिए उपयुक्त है।

एडम सिर पर कील मारा! मैंने अपने जवाब का उपयोग यह जानने के लिए किया कि फ़ाइल संवाद ब्राउजर से फाइलनाम टेक्स्ट को एक अमीर टेक्स्ट बॉक्स में कैसे डालें। मैं जिस समस्या में था, वह था जब मैं फ़ाइल स्ट्रिंग में "\" पर एक नई पंक्ति जोड़ रहा था String.split कमांड \ "\" और इसे हटाने से बंट गया था। एडम के कोड के मिश्रण का उपयोग करने के बाद, मैं फ़ाइल नाम में प्रत्येक के बाद एक नई पंक्ति बनाने में सक्षम था।

यहां मैंने उपयोग किया हुआ कोड है:

 OpenFileDialog fd = new OpenFileDialog(); fd.Multiselect = true; fd.ShowDialog(); foreach (string filename in fd.FileNames) { string currentfiles = uxFiles.Text; string value = "\r\n" + filename; //This line allows the Regex command to split after each \ in the filename. string[] lines = Regex.Split(value, @"(?<=\\)"); foreach (string line in lines) { uxFiles.Text = uxFiles.Text + line + "\r\n"; } } 

का आनंद लें!

Walrusking