Как разделить строку на «новую строку»?

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

Строка (str) содержит данные из текстового файла, например:

январь

февраль

Маршировать

и т. д.

Каждое слово находится на новой строке. Я хочу прочитать строку и отделить каждое слово в новой строке и сохранить в массив объектов String (это будет переменная с именем «элементы»).


person amg    schedule 14.08.2012    source источник


Ответы (7)


На самом деле 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);
        }
    }
}
person paxdiablo    schedule 14.08.2012

Метод 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();
person Eric    schedule 14.08.2012

это мой код и его работа для меня

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 — это функция onclick, которую я создаю в своем кнопочном xml следующим образом

<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>

in my code I try to get the first line so I use itemList.get(0) if you want to get another line just change the index like itemList.get(1) or itemList.get(n)

person Firhat    schedule 28.11.2013

используйте 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));
 }
person Ram kiran    schedule 14.08.2012

Как разделить строку по новой строке

Я пришел к этому вопросу, просто желая разделить строку, а не файл. Так что я отвечу, что здесь для будущих посетителей.

Дано

String myString = "one/ntwo/nthree";

Вы можете преобразовать его в массив с помощью

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

И при необходимости его можно преобразовать в List с помощью

List myList = new ArrayList();
Collections.addAll(myList, myArray);
person Suragch    schedule 14.09.2018

В 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

Теперь, чтобы получить длину разделенной строки, используйте метод length().

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

Надеюсь, это поможет вам. Спасибо...

person Rahul Kushwaha    schedule 11.10.2019

если вы хотите оставить пустые строки, если вообще, вы можете использовать

String lines[] = givenString.split("\\r?\\n", -1);
person ronan    schedule 10.01.2020