3

ファイルから取得した文字列を配列リストに変換したいと思います。私はこの方法で試しましたが、機能しません:

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

public class Data
{
    static File file = DataSaver.file;
    static List<String> data = new ArrayList<String>(512);
    public static void a() throws Exception
    {
        FileInputStream fis = new FileInputStream(file);
        DataInputStream dis = new DataInputStream(fis);
        BufferedReader reader = new BufferedReader(new InputStreamReader(dis));
        if(!file.exists())
        {
            throw new IOException("Datafile not found.");
        }
        else
        {
            String[] string = reader.readLine().split("$");
            for(int i = 0; i < string.length; i++)
            {
                data.add(string[i]);
            }
        }
        dis.close();
        System.out.println(data.toString()); //for debugging purposes.
    }
}

Ouput: [$testdata1$testdata2$]

必要な出力: [testdata1, testdata2]

ファイルの内容: $testdata1$testdata2$

誰かが私を助けることができますか?

4

4 に答える 4

6

String.split正規表現を取り、$エスケープする必要がある特別な文字です。また、最初の文字はその$ため、分割すると最初の要素が空になります(何らかの方法で削除する必要があります。これは1つの方法です。

String[] string = reader.readLine().substring(1).split("\\$");

...また:

String[] string = reader.readLine().split("\\$");
for (int i = 0; i < string.length; i++)
    if (!string[i].isEmpty())
        data.add(string[i]);
于 2012-07-23T18:17:45.677 に答える
3

1.を使用("\\$")して、の特別な意味を削除し"$"ます。

2.TOArrays.asList()変換に 使用しArrayますArrayList

Javaドキュメントから:

指定された配列に基づく固定サイズのリストを返します。(返されたリストへの変更は、配列に「ライトスルー」します。)このメソッドは、Collection.toArray()と組み合わせて、配列ベースのAPIとコレクションベースのAPIの間のブリッジとして機能します。返されたリストはシリアル化可能であり、RandomAccessを実装します。

このメソッドは、いくつかの要素を含むように初期化された固定サイズのリストを作成する便利な方法も提供します。

例えば:

String[] string = reader.readLine().split("\\$");

ArrayList<String> arr = new ArrayList<String>(Arrays.asList(string));
于 2012-07-23T18:20:58.780 に答える
1

特殊文字は。でエスケープする必要があります\\

分割ステートメントを次のように変更します

String[] string = reader.readLine().split("\\$");
于 2012-07-23T18:18:08.150 に答える
0

@dacweに追加

String[] string = reader.readLine().substring(1).split("\\$");
List<String> data =Arrays.asList(string);
于 2012-07-23T18:21:15.143 に答える