从字符串中读取第n行

dev*_*oid 2 java string filter

我试图读取字符串的第7行,以便我可以过滤所需的文本,但没有得到更多.(假设我有n行).

class Lastnthchar {

public static void main(String[] args) {
    // TODO Auto-generated method stub


    String alldata ="   FORM"+"\n"+
                    "   to get all data"+"\n"+
                    "   PART A is mandatory"+"\n"+
                    "   enclose all Certificate"+"\n"+
                    "   Certificate No. SFDSFDFS Last updated on 12-Jun-2009"+"\n"+
                    "   Name and address"+"\n"+
                    "   Lisa Lawerence"+"\n"+
                    "   10/3 TOP FLOOR, Street no 22 ,NewYork"+"\n"+
                    "   residence"+"\n"+
                    "   zip-21232"+"\n"+
                    "   C 78,New York"+"\n"+
                    "   US"+"\n"+
                    "   US"+"\n"+
                    "   "+"\n"+
                    "   worldwide";

    String  namerequired = new String ();

    //BufferedReader br = new BufferedReader(alldata);
    int lineno = 0;
    for(lineno = 0; lineno <alldata.length(); lineno ++)
    {
    //what should i do?
    }
    }

    }
Run Code Online (Sandbox Code Playgroud)

所以如果有任何解决方案请帮助

Tho*_*mas 8

alldata.length() 将返回字符串的长度(即字符数),而不是行数.

为了得到第n 行,你需要将串在换行符拆分,例如 alldata.split("\n")[6],以获得7 线(提供有至少7线).这也假设你\n的字符串中有换行符()而不仅仅是回车符(\r).如果要单独或组合拆分,可以将参数更改split()"\r\n|\n|\r".如果要跳过空行,可以按至少一个换行符或回车符的任意顺序进行拆分,例如"[\r\n]+".

例:

System.out.println("--- Input:");
String input = "A\nB\rC\n\nD\r\nE";
System.out.println(input);  

System.out.println("--- 4th element, split by \\n:");
System.out.println(input.split("\n")[3]); //3rd element will be "D\r"
System.out.println("--- 4th element, split by \\r\\n|\\n|\\r:");
System.out.println(input.split("\r\n|\n|\r")[3]); //3rd element will be an empty string 
System.out.println("--- 4th element, split by [\\r\\n]+:");
System.out.println(input.split("[\r\n]+")[3]); //3rd element will be "D"
System.out.println("--- END");
Run Code Online (Sandbox Code Playgroud)

输出:

--- Input:
A
B
C

D
E
--- 4th element, split by \n:
D

--- 4th element, split by \r\n|\n|\r: 

--- 4th element, split by [\r\n]+:
D
--- END
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在从某些流中读取文本(例如,从文件中读取),则可以使用BufferedReader#readLine()并计算行数.此外,您可以初始化BufferedReaderFileReader,StringReader等等,这取决于在那里你看从输入上.

如果您正在从控制台读取,Console该类也有一个readLine()方法.