0

サーブレットでファイルを読み取ろうとしていますが、これは次のコードによって行われます。

ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream("/AFINN-111.txt");

InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
PrintWriter pw = resp.getWriter();

String text = "";

たとえば、文字列を分割しようとしています。

良い 2

優れた 3

文字列には常に英単語と数値が含まれており、これらの値を に格納しようとしていますArrayList。たとえば、次のようになります。

ArrayList<String> words = new ArrayList<String>();
ArrayList<Integer> values = new ArrayList<Integer>();

さて、問題は値を分割しようとしているときです:

while ((text = reader.readLine()) != null) 
{
    resp.getWriter().println(text +  "<br />");

    resp.getWriter().println("<br />");
    String[] split_text = text.split(" ");
    //resp.getWriter().println(split_text.length +  "<br />");

    for(int j = 0 ; j < split_text.length; j++)
    {
        resp.getWriter().println(split_text[j] + " <br />");
    }
    resp.getWriter().println("<br />");
    resp.getWriter().println("<br />");

}

ストリング: 良い 2

スプリット結果: 良い 2

長さ: 1

文字列をスペースで分割しようとすると、同じ文字列が返されます。

テキスト ファイルのリストは、http ://www2.imm.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip にあります。

解決策: .split("\t"); を使用します。

みんなの助けをありがとう!

4

3 に答える 3

1

text変数に「good 2」ではなく「good 2」が含まれているようです

good&nbsp2ブラウザでは次のように見えますがgood 2、原因は HTML で&nbsp表されますsingle space

編集:あなたはtext.split("&nbsp;");まだそれらを分割すると言うことができます

于 2013-04-27T18:27:26.400 に答える
1

テキスト ファイル内の値は、単語からタブで区切られています。これにより、期待される結果が得られるはずです。

String[] split_text = text.split("\t");
于 2013-04-27T18:37:01.687 に答える
1

ファイルにはスペースの代わりにタブスペース /t があると思います

于 2013-04-27T18:38:14.193 に答える