按行提取子字符串

时间:2010-08-10 17:53:44

标签: java

我对编程很新,所以请耐心等待。假设我有一个像这样的大字符串。

  

String story =“这是第一行。\ n”
               +“这是第二行。\ n”
               +“这是第三行\ n”                +“这是第四行。\ n”
               +“这是第五行。”;

我如何提取第一行,第四行等等?

6 个答案:

答案 0 :(得分:13)

如果您想避免创建数组,可以使用Scanner

Scanner scanner = new Scanner(story);
while(scanner.hasNextLine()) {
  System.out.println(scanner.nextLine());
}

答案 1 :(得分:5)

String[] lines = story.split(System.getProperty("line.separator"));
String firstLine = lines[0];
// and so on

您可以在\n上拆分,但因此您将被固定到* nix系统的行分隔符。如果碰巧你必须在窗口上解析,那么在\n上拆分将不起作用(除非你的字符串是硬编码的,这会破坏分裂的整个目的 - 你知道哪些是事先的行)< / p>

答案 2 :(得分:3)

您可以使用split方法将字符串拆分为行,然后编制索引以获取所需的行:

String story =
    "This is the first line.\n" +
    "This is the second line.\n" +
    "This is the third line\n" +
    "This is the fourth line.\n" +
    "This is the fifth line."; 

String[] lines = story.split("\n");
String secondLine = lines[1];
System.out.println(secondLine);

结果:

This is the second line.

注意:

  • 在Java中,索引数组从零开始,而不是一个。所以第一行是lines[0]
  • split方法将正则表达式作为参数。

答案 3 :(得分:1)

String[] lines = story.split('\n');

String line_1 = lines[0];
String line_4 = lines[3];

或沿着这些方向的东西

答案 4 :(得分:1)

如果字符串非常长,您可以使用BufferedReader和StringReader的组合一次一行:

String story = ...;
BufferedReader reader = new BufferedReader(new StringReader(story));

while ((str = reader.readLine()) != null)  {
   if (str.length() > 0) System.out.println(str);
}

否则,将字符串拆分为数组,如果它使用Split足够小:

String[] lines = story.split("\n");

答案 5 :(得分:0)

您可以将字符串拆分为数组,然后选择所需的数组元素

String[] arr = story.split("\n")
arr[0] // first line
arr[3] // fourth line