2012-10-26 12 views
5

संभव डुप्लिकेट:
How to split a String by spaceविभाजन स्ट्रिंग

मैं एक पाठ फ़ाइल पार्स करते समय मदद की जरूरत है। पाठ फ़ाइल की तरह

This is  different type of file. 
Can not split it using ' '(white space) 

मेरे समस्या शब्दों के बीच स्पेस समान नहीं हैं डेटा होता है। कभी-कभी एक जगह होती है और कभी-कभी कई जगहें दी जाती हैं।

मुझे स्ट्रिंग को इस तरह से विभाजित करने की आवश्यकता है कि मुझे केवल शब्द ही मिलेगा, रिक्त स्थान नहीं।

उत्तर

16

str.split("\\s+") आज़माएं और देखें। यह तारों की एक सरणी देता है (String[])।

+0

मदद के लिए Thanx ... –

+0

@SachinMhetre: आपका स्वागत है। :) –

3

नियमित अभिव्यक्ति का उपयोग करें।

String[] words = str.split("\\s+"); 
6

आप रिक्तियों आप पर विभाजित करना चाहते हैं की संख्या निर्दिष्ट करने Quantifiers उपयोग कर सकते हैं: - one or more रिक्त स्थान

String[] words = yourString.split("\\s+"); 

इन्होंने भी आपके स्ट्रिंग बंट जाएगा

`+` - Represents 1 or more 
    `*` - Represents 0 or more 
    `?` - Represents 0 or 1 
`{n,m}` - Represents n to m 

तो, \\s+, यदि आप कुछ विशिष्ट संख्या निर्दिष्ट करना चाहते हैं तो आप {}:

के बीच अपनी सीमा दे सकते हैं
yourString.split("\\s{3,6}"); // Split String on 3 to 6 spaces 
0

आप अंतरिक्ष के साथ कई रिक्त स्थान को बदलने के लिए
replaceAll (स्ट्रिंग regex, स्ट्रिंग प्रतिस्थापन) स्ट्रिंग वर्ग की विधि का उपयोग कर सकते हैं और फिर आप विभाजन विधि का उपयोग कर सकते हैं।

3

आप regex पैटर्न का उपयोग कर सकते हैं

public static void main(String[] args) 
{ 
    String s="This is  different type of file."; 
    String s1[]=s.split("[ ]+"); 
    for(int i=0;i<s1.length;i++) 
    { 
     System.out.println(s1[i]); 
    } 
} 

उत्पादन

This 
is 
different 
type 
of 
file. 
+0

आपका समाधान केवल रिक्त स्थान से विभाजित होता है, न कि किसी अन्य व्हाइटस्पेस वर्णों जैसे कि \ \ t \ n \ x0B \ f \ r'। दूसरों के अनुसार वर्णित वर्ण वर्ग '\ s' (किसी भी सफेद स्थान चरित्र) का प्रयोग करें। 'स्ट्रिंग [] शब्द = yourString.split (" \\ s + "); ' – jlordo

0
String spliter="\\s+"; 
String[] temp; 
temp=mystring.split(spliter); 
0

मैं तुम्हें एक और तरीका अपने स्ट्रिंग tockenize दे रहा हूँ अगर तुम न विभाजन का उपयोग करना चाहते method.Here है विधि

public static void main(String args[]) throws Exception 
{ 
    String str="This is  different type of file.Can not split it using ' '(white space)"; 
    StringTokenizer st = new StringTokenizer(str, " "); 
    while(st.hasMoreElements()) 
    System.out.println(st.nextToken()); 
} 
} 
+0

और वह स्प्लिट विधि का उपयोग क्यों नहीं करना चाहेंगे, यह देखते हुए कि यह 'स्ट्रिंगटोकनाइज़र' से जाने का बेहतर तरीका है? कृपया 'स्ट्रिंगटोकनाइज़र' का उपयोग करना बंद करें। –

+0

रोहित आप बता सकते हैं कि स्ट्रिंगटोकनाइज़र –

+0

से विभाजन क्यों बेहतर है, आप http://stackoverflow.com/questions/691184/scanner-vs-stringtokenizer-vs-string-split http://www.javamex.com/tutorials देख सकते हैं /regular_expressions/splitting_tokenisation_performance.shtml और http://stackoverflow.com/questions/5965767/performance-of-stringtokenizer-class-vs-split-method-in-java –

संबंधित मुद्दे