2017-10-18 38 views
0

我試圖在條件滿足時將新行中的字符串連接起來。這是我輸入:字符串在JAva新行中的串聯

Concept 
soft top cove 
tonneau cove 
interior persennin 
Concept 
Innen 
Innenraum 
Platz im Inneren 

所有我想要做的就是字符串的概念之後來連接所有的字符串,並得到下面的輸出:

lemma, surface 
soft top cove, tonneau cove|interior persennin 
Innen, Innenraum|Platz im Inneren 

我知道,如果一個字符串值等於概念我想要到另一行並在逗號之前寫下一行的字符串,而不是由「|」分隔的其他行的字符串。例如軟頂山灣,酒桶灣|室內裝飾 這是我的代碼到目前爲止。歡迎任何建議! 謝謝:

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileWriter; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.ArrayList; 
import java.util.List; 

public class Converter { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     BufferedReader inputcsv = null; 
      List <String> zeilencsv = new ArrayList<String>(); 
     try { 
      inputcsv = Files.newBufferedReader(Paths.get("ErsteDatei.csv")); 
      String content; 
      while ((content = inputcsv.readLine()) != null) { 
       zeilencsv.add(content); 

       System.out.println(content); 
      } 
      File outputcsv = new File("TwoColumnsResult.csv"); 
      //creates new file 
      outputcsv.createNewFile(); 
      FileWriter csvFilewriter = new FileWriter(outputcsv); 
      //arraylist loop 
      int counter_a=0; 
      int counter = 1; 
      for (String zeile:zeilencsv){ 
       String concept = "Concept"; 

       //check string value =concept? 
         if(zeile.toString().equals(concept)){ 

          zeile="lemma,surface"; 
          for(String zeile2:zeilencsv){ 
           //here I don't know how to say give me the next line, write it as a word , put comma and than concatenate with a | 
          } 



         } 
         else { 

         counter++; 

} 
       csvFilewriter.write(zeile+"\n"); 
       counter++; 
      } 
      //write 
      csvFilewriter.flush(); 
      //closes the file 
      csvFilewriter.close(); 


     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
+0

'如果一個字符串的值是相等的概念'......你需要定義什麼是平等的概念。這點我不清楚。 –

+0

對不起,概念只是一個字符串值的「概念」。我想我可以這樣檢查: – user1788114

+0

哦,對不起,概念只是一個字符串值「概念」。我想我可以這樣檢查:if(zeile.toString()。equals(concept))如果滿足這個條件而不是下一行,把它寫在輸出文件中,而不是寫逗號,轉到下一行寫這個在逗號後面,轉到下一行並將其與前一個連接在一起,直到該行的值等於「概念」。 Thx – user1788114

回答

0

,所以如果我理解正確,您想,找到後,「概念」救下一行文本,連接一個逗號,然後保存下一行,並連接一個|然後保存下一個?

好,你正在使用的代碼是種奇怪的,但我會做的是未來:

zeile="lemma,surface"; 

// I'll put a counter to distinguish where to put "," and "|" 
int counter = 0; 

// Then I need a string variable to save the line 
String line = ""; 

for(String zeile2:zeilencsv){ 
    if (count == 0){ //First iteration 
     line = zeile2.toString(); 
    } 
    if(count == 1){ . //Second iteration add the comma 
     line = line + "," + zeile2.toString(); 
    } 
    if(count == 2){ . //Second iteration add the pipe 
     line = line + "|" + zeile2.toString(); 
    } 
    count++; 
} 

我希望這是你在找什麼。如果您想優化代碼,請隨時給我發送消息,我們可以一起工作。

+0

太好了。謝謝。這是一個簡單而正確的方法。我認爲只是小小的缺失。 – user1788114

+0

太棒了。少了什麼東西? –

+0

在輸出文件中,我將字符串conecpt作爲一個值,例如概念,軟頂海灣|酒桶等等,但它不是必需的。我需要軟頂山灣,|晚上海灣|內部| persennig,我想我需要一個動態的計數器因爲現在的計數器停止在指數2 – user1788114