2

構成ファイルからスペース区切りの値を読み取ろうとしています。pg_hba.conf以下はファイルに含まれるデータです。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:

host    all         all         127.0.0.1/32          md5

上記の値 host, all, all, 127.0.0.1/32, md5 を取得し、変更して、変更した値を同じファイルに書き戻す必要があります。

以下は、ファイルを読み取るために使用するコードです。

BufferedReader in = new BufferedReader(new FileReader("pg_hba.conf"));
String str;
str = in.readLine();
while ((str = in.readLine()) != null) {
    System.out.println(str);
}
in.close();

これらのスペースで区切られた値を取得するにはどうすればよいですか? 同じフォーマット、つまり同じ量のスペースでこのファイルに書き戻すことは可能ですか?

Propertyこれにクラスを使用できますか?

4

4 に答える 4

3

たとえば、標準のJavaクラスStringから分割されたメソッドを使用できます。

str.split("\\s+");

もう1つの可能性は、 Google Guavaのようなより「高度な」ライブラリを使用することです。このライブラリはSplitter、次のようなタスクに適したユーティリティクラスを提供します。

Splitter.on(' ').split("foo bar")
于 2012-10-22T07:31:29.570 に答える
0

String.split()メソッドを使用できます。

   String[] sa= str.split(" ");
于 2012-10-22T07:31:18.420 に答える
0

カスタムセパレーターを備えた csv 読み取りフレームワークを使用する必要があります。そうすれば、はるかに高速になり、維持するコードが少なくなります。

Open CSVが最も成熟しているように見えますが、apache commons csvも確認する必要があります。

于 2012-10-22T07:35:07.330 に答える
0

あなたの質問から、入力文字列の形式は変わらないと思います。それに基づいて、コードフラグメントが提供されます。

これらのスペースで区切られた値を取得するにはどうすればよいですか?

String values[] = new String[9];
bool addingSpace = false;
String value = "";
int ind = 0;
for(int i=0; i<str.length; i++)
{
    char indexValue = str.charAt(i);
    if(Character.isWhitespace(indexValue))
    {
        if(!addingSpace)
        {
            values[ind++] = value;
            value = "";
        }
        addingSpace = true;
    } 
    else if(Character.isLetter(indexValue))
    {
        if(addingSpace)
        {
            values[ind++] = value;
            value = "";
        }
        addingSpace = false;
    }

    value += indexValue;
}

同じフォーマット、つまり同じ量のスペースでこのファイルに書き戻すことは可能ですか?

String values[] = new String[9];

この配列には、正確な番号のすべてのデータがあります。間のスペースの。ファイルに書き留めたい場合は、同じ配列を使用できます。

于 2012-10-22T07:53:56.413 に答える