2017-01-28 1 views
0

私は4行のデータを持つテキストファイルを持っています。キャリッジリターン&スペースを削除して文字列を正しく配列に格納するにはどうすればよいですか?

AAA,ZZZ,555,10 
BBB,KKK,908977,5 
CCCCC,WIKY PODAR,130000,15 
DDDDD,XXXXX555,130110,30 

次に私はそれらを読んで分割し、キャリッジリターンを取り除いて、アンサーの昏睡を取り除き、それらをアレイに保存しました。

印刷アウトARRYを、それが正常に見える:

[AAA, ZZZ, 555, 10, BBB, KKK, 908977, 5, CCCCC, WIKY PODAR, 130000, 15, DDDDD, XXXXX555, 130110, 30] 

しかし、私は、indivisually 10を、それらをプリントアウトし、BBBは、単一の配列要素になりました。それらを2つの異なる配列要素にどのように同期させるか?

ありがとうございます。

出力:

AAA 
ZZZ 
555 
10, BBB 
KKK 
908977 
5, CCCCC 
WIKY PODAR 
130000 
15, DDDDD 
XXXXX555 
130110 
30 

while (inputStream.read(buffer) != -1) { 
       String testString2 = new String(buffer); 
       String delim2 = ","; 
       String[] token2 = testString2.split(delim2); 
       String[] myStringArray = new String[token2.length]; 
       for (int i = 0; i < token2.length; i++) { 
        token2[i]=token2[i].replaceAll("[\n]", ""); 
        token2[i]=token2[i].replaceAll("[\r]", ", "); 
        myStringArray[i] = token2[i]; 
       } 
+0

'10'と 'BBB'、無コンマ間の' \のN 'があります。したがってカンマで区切っているので、 '10'と' BBB'は1つのグループの一部とみなされます。 – coolioasjulio

答えて

2

代わりに以下の方法を試していないのはなぜ?より短く甘い?あなたが本当にそれをあなたが持っている方法を実行したい場合は

List<String> lines = Files.readLines(file, Charsets.UTF_8); 
for(String line : lines) { 
    String[] words = line.split(","); 
    System.arrayCopy(words, 0, myStringArray, myStringArray.length, words.length); 
} 

はしかし、あなたは

にノーあり

token2[i]=token2[i].replaceAll("[\r]", "");

token2[i]=token2[i].replaceAll("[\r]", ", ");

を置き換えますcaを置き換える必要があるコンマで復帰します。

+0

こんにちは、ありがとうございます。私はキャリッジリターンをカンマで置き換えようとしなかったので、Arrayを出力しました。配列にキャリッジリターンが追加されました。 – Snailwalker

+0

答えに空白が表示されているように、キャリッジリターンを空白に置き換える必要があります。 – VHS

+0

はい私はretuensキャリッジを空のスペースで置き換えました。しかし、配列全体を印刷すると、配列にキャリッジリターンがあることに気づくでしょう。 – Snailwalker

1

キャリッジリターンをreplaceAll()に置き換える必要はありません。キャリッジリターンは、データのコンマのように区切り文字として機能します。

各行を読み込み、コンマで区切り、トークンを集約するコードです。

import java.io.*; 
import java.util.*; 

public class ParseTextFile { 

    public static String[] read(String fileName) throws IOException { 

     // Will hold all tokens from the file. 
     List<String> list = new ArrayList<String>(); 

     // Open the file 
     FileInputStream fstream = new FileInputStream(fileName); 
     BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 

     String buffer = null; 

     // Read the file line-by-line. 
     while ((buffer = br.readLine()) != null) { 

      // Split this line on commas and add each token to the list. 
      String[] tokens = buffer.split(","); 

      for (String token : tokens) { 
       list.add(token); 
      } 
     } 

     br.close(); 

     String[] array = new String[list.size()]; 
     return list.toArray(array); 
    } 

    public static void main(String argv[]) throws Exception { 

     String[] result = read("text.txt"); 
     for (String string : result) { 
      System.out.printf("%s\n", string); 
     } 

    } 
} 

出力:

AAA 
ZZZ 
555 
10 
BBB 
KKK 
908977 
5 
CCCCC 
WIKY PODAR 
130000 
15 
DDDDD 
XXXXX555 
130110 
30 
関連する問題