2016-12-20 32 views
5

Söz konusu cümleleri dizedeki sınırlayıcılara göre nasıl bölebilirim ve sözcüklerin sıklığını nasıl sayırım?Java'da birden fazla sınırlayıcı ile bölme

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

Benim metin dosyasıdır:

Billy_Reeves 

Smorz 

Nationalist_Left_-_Youth 

Ancient_Greek_units_of_measurement 

Jiuting_(Shanghai_Metro) 

Blodgett,_MO 

Baekjeong 

Matt_Brinkman 

National_Vietnam_Veterans_Art_Museum 

Ben kendi çözüm belki bu diğerleri için yararlı olacaktır bulmak:

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

Ne denediniz? – Thomas

+0

Bu benim bulut bilişim ev ödevim. Her bir satırda tüm sınırlayıcıları (String sınırlayıcı olarak verilir) bölme yaparak, verilen bir txt dosyasındaki sözcüklerin sayma sıklığı olan Harita Azaltma örneğini denemeye çalışıyorum. –

cevap

4

ile deneyin

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

da

Use String.split() with multiple delimiters

+0

'Split' ifadesinin normal ifadeyi aldığını, ancak normal ifadedeki bazı karakterlerin özel olduğunu ve kaçmayı gerektirdiğini biliyorsunuz. Geçerli biçimde, bu kod düzgün bir şekilde oluşturulmadığı için PatternSyntaxException öğesini atar. – Pshemo

+0

Sabit şimdi @Pshemo – AMB

2

bölünmüş yöntemi girişine düzenli veya normal ifade operatörü ile ayrılmış ya da ekspresyonunun da, sadece (karakter sınıfını kullanarak mi, birden çok ayraçları kullanımı, bu yüzden bağımsız değişken olarak normal bir ifade alır sınırlayıcılar tek karakterdir). YA operatörü kullanarak

: karakter sınıfını kullanma

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

:

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

onlar düzenli ifade meta gibi bazı karakterleri şekilde çıkmalıdır görebileceğiniz gibi.

İlgili konular