विभाजित स्ट्रिंग केवल पहली बार - जावा


145

मैं '' = सही '' तार को विभाजित करना चाहता हूँ। लेकिन मैं चाहता हूं कि यह पहली बार में ही अलग हो जाए। मैं उसे कैसे कर सकता हूँ ? यहाँ '_' वर्ण के लिए एक जावास्क्रिप्ट उदाहरण है, लेकिन यह मेरे लिए केवल निर्दिष्ट वर्ण के पहले चरण में स्ट्रिंग विभाजित करने के लिए काम नहीं करता है

उदाहरण :

apple=fruit table price=5

जब मैं String.split ('=') आज़माता हूं; यह देता है

[apple],[fruit table price],[5]

लेकिन मुझे ज़रूरत है

[apple],[fruit table price=5]

धन्यवाद


आपको भागने की जरूरत नहीं है =
रोहित जैन

जवाबों:


282
string.split("=", 2);

जैसा कि String.split(java.lang.String regex, int limit)बताते हैं:

इस पद्धति द्वारा लौटाए गए सरणी में इस स्ट्रिंग का प्रत्येक विकल्प होता है जिसे किसी अन्य विकल्प द्वारा समाप्त किया जाता है जो दी गई अभिव्यक्ति से मेल खाता है या स्ट्रिंग के अंत तक समाप्त होता है। सरणी में सबस्ट्रिंग उस क्रम में होते हैं जिसमें वे इस स्ट्रिंग में होते हैं। यदि अभिव्यक्ति इनपुट के किसी भी भाग से मेल नहीं खाती है, तो परिणामी सरणी में सिर्फ एक तत्व है, अर्थात् यह स्ट्रिंग।

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

boo:and:fooउदाहरण के लिए, स्ट्रिंग इन मापदंडों के साथ निम्नलिखित परिणाम देता है:

Regex Limit    Result
:     2        { "boo", "and:foo" }
:     5        { "boo", "and", "foo" }
:    -2        { "boo", "and", "foo" }
o     5        { "b", "", ":and:f", "", "" }
o    -2        { "b", "", ":and:f", "", "" }
o     0        { "b", "", ":and:f" }

1
यह समझने के लिए भ्रामक है लेकिन यह सिर्फ काम करता है! धन्यवाद!
क्लिंट ईस्टवुड

4
कुछ स्पष्टीकरण: लिमिट 2 AT MOST 2 तत्वों की सूची लौटाएगा। यदि अभिव्यक्ति का कोई मेल नहीं है, तो यह 1 तत्व की सूची लौटा सकता है। यदि अभिव्यक्ति के 2 मैच हैं, तो दिए गए सरणी का दूसरा तत्व विभाजित नहीं किया जाएगा।
modle13


5

जैसा कि कई अन्य उत्तर सीमा दृष्टिकोण का सुझाव देते हैं, यह एक और तरीका हो सकता है

आप String पर indexOf मेथड का उपयोग कर सकते हैं, जो दिए गए कैरेक्टर का पहला अश्योरेंस लौटाएगा, उस इंडेक्स का उपयोग करके आप वांछित आउटपुट प्राप्त कर सकते हैं

String target = "apple=fruit table price=5" ;
int x= target.indexOf("=");
System.out.println(target.substring(x+1));

2
यह विभाजित नहीं होता है, लेकिन दूसरा भाग निकालता है। पहले भाग को लेने के लिए कोड की एक और पंक्ति की आवश्यकता होगी ... 4 लाइनें बनाम 1 = अंगूठे नीचे
क्लिंट ईस्टवुड

0

इस कोड को आज़माएं ...

यह काम कर रहा है।

public class Split
{
    public static void main(String...args)
    {
        String a = "%abcdef&Ghijk%xyz";
        String b[] = a.split("%", 2);

        System.out.println("Value = "+b[1]);
    }
}

0
String string = "This is test string on web";
String splitData[] = string.split("\\s", 2);

Result ::
splitData[0] =>  This
splitData[1] =>  is test string  


String string = "This is test string on web";
String splitData[] = string.split("\\s", 3);

Result ::
splitData[0] =>  This
splitData[1] =>  is
splitData[1] =>  test string on web

डिफॉल्ट स्प्लिट विधि द्वारा दिए गए रेगेक्स के आधार पर एन नंबर की सारणियां बनाएं। लेकिन यदि आप एक पूर्णांक तर्क के रूप में पास दूसरे तर्क की तुलना में विभाजन के बाद बनाने के लिए सरणियों की संख्या को प्रतिबंधित करना चाहते हैं।


3
क्या समस्या थी? अपने उत्तर को स्पष्ट करने के लिए अधिक विवरण शामिल करें!
परेश मेयानी

-2
String[] func(String apple){
String[] tmp = new String[2];
for(int i=0;i<apple.length;i++){
   if(apple.charAt(i)=='='){
      tmp[0]=apple.substring(0,i);
      tmp[1]=apple.substring(i+1,apple.length);
      break;
   }
}
return tmp;
}
//returns string_ARRAY_!

मुझे अपने तरीके लिखना पसंद है :)


3
यह विधि बहुत उपयोगी नहीं है, क्योंकि विभाजक हार्डकोड है। इसके अलावा, फॉर-लूप के साथ रैखिक खोज के कार्यान्वयन के लिए पहला विभाजक का स्थान खोजने के लिए String.indexOf का उपयोग करने पर कोई लाभ नहीं होता है। तीसरा, यह देखना सहज नहीं है कि कितने स्ट्रिंग तत्व वापस आ गए हैं। जैसा कि हम चीजों को दो में विभाजित करने के बारे में बात करते हैं, पेयर <स्ट्रिंग, स्ट्रिंग> डेटा प्रकार का उपयोग करने पर विचार करें जो एक सरणी बनाने के बजाय बिल्कुल दो स्ट्रिंग्स का प्रतिनिधित्व करता है।
जी बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.