2011-10-28 18 views
146

पर काम नहीं करती है मैंने अपने वेब एप्लिकेशन से गलत हिस्से को अलग करने के लिए एक सरल कोड स्निपेट तैयार किया है।जावा में स्प्लिट() विधि डॉट (।)

public class Main { 

    public static void main(String[] args) throws IOException { 
     System.out.print("\nEnter a string:->"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String temp = br.readLine(); 

     String words[] = temp.split("."); 

     for (int i = 0; i < words.length; i++) { 
      System.out.println(words[i] + "\n"); 
     } 
    } 
} 

मैंने वेब अनुप्रयोग जेएसएफ बनाने के दौरान इसका परीक्षण किया है। मैं सिर्फ यह जानना चाहता हूं कि उपर्युक्त कोड temp.split(".") क्यों काम नहीं करता है। बयान,

System.out.println(words[i]+"\n"); 

कंसोल पर कुछ भी प्रदर्शित नहीं करता है इसका मतलब है कि यह लूप के माध्यम से नहीं जाता है। जब मैं temp.split() विधि के अन्य पात्रों के तर्क को बदलता हूं, तो यह सामान्य रूप से ठीक काम करता है। क्या समस्या हो सकती है?

+3

इसे से बचें। स्प्लिट एक regex –

+5

यिक्स पर काम करता है, यह * डिफ़ॉल्ट * जावा में नियमित अभिव्यक्तियों के लिए? –

उत्तर

352

java.lang.String.split नियमित अभिव्यक्तियों पर विभाजित, और . नियमित अभिव्यक्ति में एक आरक्षित चार का अर्थ है "कोई चरित्र"।

temp.split("\\.") आज़माएं।

+0

यह मेरे लिए भी काम करता है। मैं "|" के लिए कर रहा था यह "\\ |" के साथ काम किया। धन्यवाद – Bhupinder

2

यह ठीक काम करता है। क्या आपने the documentation पढ़ा था? स्ट्रिंग को नियमित अभिव्यक्ति में परिवर्तित कर दिया जाता है।

. सभी इनपुट वर्णों से मेल खाने वाला विशेष चरित्र है।

किसी भी नियमित अभिव्यक्ति विशेष चरित्र के साथ, आप \ से बचते हैं। जावा स्ट्रिंग से बचने के लिए आपको अतिरिक्त \ की आवश्यकता है।

8

प्रयास करें:

String words[]=temp.split("\\."); 

विधि है: "।"

String[] split(String regex) 

रेगेक्स

52

documentation on split() का कहना है:

विभाजन इस दिया regular expression के मैचों के आसपास स्ट्रिंग।

(जोर मेरा।)

डॉट नियमित अभिव्यक्ति वाक्य रचना में एक विशेष चरित्र है। पैरामीटर पर Pattern.quote() का प्रयोग विभाजित करने के लिए() यदि आप विभाजन एक शाब्दिक स्ट्रिंग तर्ज पर होना चाहते हैं:

String[] words = temp.split(Pattern.quote(".")); 
+0

Pattern.quote का उपयोग करना हमेशा बेहतर होता है –

10

विधि के लिए रेगुलर एक्सप्रेशन, न कोई स्ट्रिंग लेता है, और डॉट नियमित अभिव्यक्ति में एक विशेष अर्थ नहीं है । इसे split("\\.") की तरह से बचें। आपको डबल बैकस्लैश की आवश्यकता है, दूसरा वाला पहला भाग निकलता है।

2
private String temp = "mahesh.hiren.darshan"; 

    String s_temp[] = temp.split("[.]"); 

    Log.e("1", ""+s_temp[0]); 
5

\\. सरल उत्तर है। आपकी मदद के लिए यहां सरल कोड है।

while (line != null) { 
    //    
    String[] words = line.split("\\."); 
    wr = ""; 
    mean = ""; 
    if (words.length > 2) { 
     wr = words[0] + words[1]; 
     mean = words[2]; 

    } else { 
     wr = words[0]; 
     mean = words[1]; 
    } 
} 
संबंधित मुद्दे