有没有办法通过字符串行子串?
类似于:String.substring(line_num);
或者我们通过计算索引来手动完成?
答案 0 :(得分: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);
答案 1 :(得分:2)
public String substringLine(String text, int lineNumber){
String[] textLines = text.split("[\r\n]+");
return textLines.length < lineNumber ? textLines[lineNumber] : null;
}
这是一个简单的方法,可以做你想要的。
答案 2 :(得分: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;
}