6
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str
while ((str =in.readLine()) != null)
{
     items = str.split("\n");
}
in.close();

字符串 (str) 包含来自文本文件的数据,例如:

一月

二月

行进

等等

每个单词都在新行上。我想读取字符串并在新行上分隔每个单词并存储到字符串对象数组中(这将是名为“items”的变量)。

4

7 回答 7

12

实际上,BufferedReader.readLine 已经根据换行符拆分了输入。

因此,您目前拥有的位置:

items=str.split("\n");

您只需要附加str到您的数组。

例如,使用infile文件保存:

January
February
March
April
May
June

以下程序输出6(创建的数组列表的大小):

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
class Test {
    public static void main (String[] args) {
        try {
            ArrayList<String> itms = new ArrayList<String> ();
            BufferedReader br = new BufferedReader (new FileReader ("infile"));
            String str;
            while ((str = br.readLine()) != null)
                itms.add(str);
            br.close();
            System.out.println (itms.size());
        } catch (Exception e) {
            System.out.println ("Exception: " + e);
        }
    }
}
于 2012-08-14T05:42:14.087 回答
2

readLine方法已经逐行读取。此字符串中不会有任何\n字符。

试试这个:

ArrayList<String> itemList = new ArrayList<String>();
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
    itemList.add(str);
}
in.close();
于 2012-08-14T05:42:53.847 回答
1

这是我的代码及其对我的工作

private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {
        String response = "";
        for (String url : urls) {
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            ArrayList<String> itemList = new ArrayList<String>();
            try {
                HttpResponse execute = client.execute(httpGet);
                InputStream content = execute.getEntity().getContent();

                BufferedReader buffer = new BufferedReader(
                        new InputStreamReader(content, "iso-8859-1"));
                StringBuilder sb = new StringBuilder();

                String s = null;

                while ((s = buffer.readLine()) != null) {

                    itemList.add(s);


                }

                response = itemList.get(0);
                content.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return response;
    }

    @Override
    protected void onPostExecute(String result) {
        textView.setText(Html.fromHtml(result));
    }
}

public void readWebpage(View view) {
    DownloadWebPageTask task = new DownloadWebPageTask();
    task.execute(new String[] { "http://www.yourURL.com" });

}

readWebpage函数是我在按钮 xml中创建的onclick 函数,如下所示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<Button android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/readWebpage" android:onClick="readWebpage" android:text="Load Webpage"></Button>
<TextView android:id="@+id/TextView01" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Example Text"></TextView>

在我的代码中,我尝试获取第一行,因此如果您想获取另一行,则使用itemList.get(0)只需更改索引,例如itemList.get(1)itemList.get(n)

于 2013-11-28T04:40:08.877 回答
0

用于Arraylist这个..

ArrayList<String> items= new ArrayList<String>();

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
while ((str =in.readLine()) != null)
{
    items.add(str.split("\n"));
}
in.close();

=====>检查

 for(int i=0;i<items.size;i++)
 {
    System.out.println("item name "+items.get(i));
 }
于 2012-08-14T05:45:23.143 回答
0

如何用换行符分割字符串

我来这个问题只是想分割一个字符串,而不是一个文件。所以我会在这里为未来的访客回答这个问题。

给定

String myString = "one/ntwo/nthree";

您可以将其转换为数组

String myArray[] = myString.split("\n");    // {"one", "two", "three"};

如果需要,可以将其转换为Listwith

List myList = new ArrayList();
Collections.addAll(myList, myArray);
于 2018-09-14T01:52:44.640 回答
0

在 Android/Java 中,这非常简单。按照这个: -

认为

String txt="I am Rahul Kushwaha.I am an Android Developer";

现在,将其逐行拆分。使用split()方法。像:-

String txt_split=txt.split("\n");
System.out.println(txt_split);

输出 :-

I
am
Rahul
Kushwaha
.
I
am
an
Android
Developer

现在,要获取拆分字符串的长度,请使用lenght()方法。

int txt_length=txt_split.length();
System.out.println("text length=",txt_length);

输出:-

text length=10

到特定的数据行。这样做: -

String[] text_data=txt.split("\n");

System.out.println("Name :",text_data[2]);
System.out.println("Title :",text_data[3]);
System.out.println("Job :",text_data[8]);

输出:-

Name :Rahul
Title :Kushwaha
Job :Android

希望这会帮助你。谢谢...

于 2019-10-11T09:29:05.237 回答
0

如果您想保留空白行,那么您可以使用

String lines[] = givenString.split("\\r?\\n", -1);
于 2020-01-10T19:47:30.833 回答