8

ローカルの txt ファイルを読み取り、このファイル内のテキストを読み取りたい。その後、以下の例のように、このテキスト全体を文字列に分割したいと思います。

例:ファイルに含まれているとしましょう-

 abcdef                                 
 ghijkl

 aededd               
 ededed

 ededfe
 efefeef
 efefeff

 ......
 ......

このテキストを文字列に分割したい

s1 = abcdef+"\n"+ghijkl;

s2 = aededd+"\n"+ededed; 

s3 = ededfe+"\n"+efefeef+"\n"+efefeff;

........................

空行でテキストを分割したいということです。

私はファイルを読む方法を知っています。テキストを文字列に分割する方法を知りたい

4

6 に答える 6

9

文字列を配列に分割するには

String.split();

改行でそれが必要な場合は、

String.split("\\n\\n");

アップデート*

あなたの言っていることが理解できたら、ジョン。

あなたのコードは本質的に

BufferedReader in
   = new BufferedReader(new FileReader("foo.txt"));

List<String> allStrings = new ArrayList<String>();
String str ="";
while(true)
{
    String tmp = in.readLine();
    if(tmp.isEmpty())
    {
      if(!str.isEmpty())
      {
          allStrings.add(str);
      }
      str= "";
    }
    else if(tmp==null)
    {
        break;
    }
    else
    {
       if(str.isEmpty())
       {
           str = tmp;
       }
       else
       { 
           str += "\\n" + tmp;
       }
    }
}

あなたが解析しようとしているものかもしれません。

allStrings は、すべての文字列のリストです。

于 2012-04-08T19:48:06.837 に答える
5

以下のコードは、有用なデータの間に 2 行以上の空行がある場合でも機能します。

import java.util.regex.*;

// read your file and store it in a string named str_file_data

Pattern p = Pattern.compile("\\n[\\n]+");     /*if your text file has \r\n as the newline character then use Pattern p = Pattern.compile("\\r\\n[\\r\\n]+");*/
String[] result = p.split(str_file_data);

(コードをテストしていないため、タイプミスがある可能性があります。)

于 2012-04-08T20:11:16.243 に答える
3

ファイルのエンコード方法に依存する可能性があるため、次のようにします。

String.split("(\\n\\r|\\n|\\r){2}");

改行を "\n\r" としてエンコードするテキスト ファイルもあれば、単に "\n" としてエンコードするテキスト ファイルもあります。行の 2 つの新しい行は、空の行があることを意味します。

于 2012-04-08T19:52:23.460 に答える
0

@Kevin コードは正常に動作し、コードがテストされていないと彼が述べたように、必要な 3 つの変更は次のとおりです。

1. (tmp==null)の if チェックを最初に行う必要があります。そうしないと、null ポインター例外が発生します。

2. このコードは、ArrayList に追加される最後の行セットを除外します。最後のものを確実に追加するには、while ループの後に次のコードを含める必要があります。}

3. 行str += "\n" + tmp ; \\nの場合は代わりに\nを使用するように変更する必要があります。このスレッドの最後をご覧ください。役立つようにコード全体を追加しました

BufferedReader in
   = new BufferedReader(new FileReader("foo.txt"));

List<String> allStrings = new ArrayList<String>();
String str ="";
List<String> allStrings = new ArrayList<String>();
        String str ="";
        while(true)
        {
            String tmp = in.readLine();
            if(tmp==null)
            {
                break;
            }else if(tmp.isEmpty())
            {
                if(!str.isEmpty())
                {
                    allStrings.add(str);
                }
                str= "";
            }else
            {
                if(str.isEmpty())
                {
                    str = tmp;
                }
                else
                {
                    str += "\n" + tmp;
                }
            }

        }
        if(!str.isEmpty())
        {
            allStrings.add(str);
        }
于 2018-12-06T14:51:26.933 に答える