2016-12-20 10 views
5

में एकाधिक डिलीमीटर के साथ विभाजित करें मैं स्ट्रिंग में डिलीमीटरों के संबंध में वाक्यों को कैसे विभाजित कर सकता हूं और शब्दों की आवृत्ति को गिन सकता हूं?जावा

String delimiters = "\t,;.?!-:@[](){}_*/"; 

मेरे पाठ फ़ाइल है:

Billy_Reeves 

Smorz 

Nationalist_Left_-_Youth 

Ancient_Greek_units_of_measurement 

Jiuting_(Shanghai_Metro) 

Blodgett,_MO 

Baekjeong 

Matt_Brinkman 

National_Vietnam_Veterans_Art_Museum 

मुझे लगता है खुद समाधान हो सकता है यह दूसरों के लिए उपयोगी होगा:

BufferedReader br = null; 
      int index=0; 
      String sCurrentLine; 
       br = new BufferedReader(new FileReader(fileName));//file name with path 

       while ((sCurrentLine = br.readLine()) != null) 
       { 

        for(int i=0; i<sCurrentLine.length(); i++) 
        { 
         for(int j=0; j<delimiters.length(); j++) 
         { 
          if(sCurrentLine.charAt(i) == delimiters.charAt(j)) 
          { 
           int startIndex = 0; 
           int endIndex = i; 

           String subStr=sCurrentLine.substring(0, endIndex); 
           String subStr2=sCurrentLine.substring(endIndex+1,sCurrentLine.length()); 

           sCurrentLine = subStr.concat(subStr2); 
          } 
         } 
        } 

       } 
+2

आपने क्या प्रयास किया? – Thomas

+0

यह मेरा क्लाउड कंप्यूटिंग होमवर्क है। मैं मानचित्र को कम करने की कोशिश कर रहा हूं जो प्रत्येक पंक्ति में सभी डेलीमीटर (जिसे स्ट्रिंग डिलीमीटर के रूप में दिया जाता है) को विभाजित करके किसी दिए गए txt फ़ाइल में शब्दों की गणना आवृत्ति है। –

उत्तर

4

साथ प्रयास करें

split("\\t|,|;|\\.|\\?|!|-|:|@|\\[|\\]|\\(|\\)|\\{|\\}|_|\\*|/"); 

इसके अलावा

Use String.split() with multiple delimiters

+0

आपको पता है कि 'विभाजन' regex लेता है, लेकिन भूल गया कि regex में कुछ वर्ण विशेष हैं और भागने की आवश्यकता हो सकती है। वर्तमान रूप में यह कोड PatternSyntaxException फेंक देगा क्योंकि यह ठीक से regex नहीं बनाया गया है। – Pshemo

+0

अब फिक्स्ड @Pshemo – AMB

2

विभाजन विधि तर्क के रूप में एक नियमित अभिव्यक्ति का समय लगता है, कई सीमांकक उपयोग करने के लिए, आप इनपुट करने के लिए रेगुलर एक्सप्रेशन या रेगुलर एक्सप्रेशन से ऑपरेटर द्वारा अलग या (केवल यदि एक चरित्र वर्ग का उपयोग कर की जरूरत है delimiters एकल पात्र हैं)।

OR ऑपरेटर का उपयोग करना:

String delimiters = "\\t|,|;|\\.|\\?|!|-|:|@|\\[|\\]|\\(|\\)|\\{|\\}|_|\\*|/"; 

चरित्र वर्ग का उपयोग करना:

String delimiters = "[-\\t,;.?!:@\\[\\](){}_*/]"; 

आप देख सकते हैं पात्रों में से कुछ के रूप में वे regex अक्षरों से परे हैं भाग निकले किया जाना चाहिए।