2

有没有办法通过字符串行子串?

有点像: String.substring(line_num);

或者我们必须通过计算索引来手动完成?

4

3 回答 3

7

不,那是不可能的。但是,您可以将字符串拆分\n,然后获取所需的行:

String s = "First line\nSecond line\nThird line\nFourth line";
String[] lines = s.split("\n", -1);
System.out.println(lines[2]); // Third line

如果您不知道平台的行分隔符是什么,请使用System.getProperty("line.separator").

或者,如果您想获得一系列行,请使用Arrays.copyOfRange()

String s = "First line\nSecond line\nThird line\nFourth line";
String[] lines = s.split("\n", -1);
String[] lines2To4 = Arrays.copyOfRange(lines, 1, 4);
于 2012-08-30T13:00:33.593 回答
2
public String substringLine(String text, int lineNumber){
    String[] textLines = text.split("[\r\n]+");
    return textLines.length < lineNumber ? textLines[lineNumber] : null;
}

这是做你想做的事情的简单方法。

于 2012-08-30T13:02:51.353 回答
2

我不知道这样做的内置方法,但您可以编写一个简单快速的程序,无需不必要的分配即可找到正确的行:

public static String substringByLine(String s, int n) {
    int pos = -1, start;
    do {
        pos = s.indexOf('\n', start = pos+1);
        if (pos < 0) {
            pos = s.length();
            break;
        }
    } while (n-- > 0);
    return n <= 0 ? s.substring(start, pos) : null;
}

这是ideone 的链接

于 2012-08-30T13:17:39.070 回答