计算Java字符串中的行数
需要一些紧凑的代码来计算Java中字符串的行数。 该字符串将由\r或\n分隔。这些换行符的每个实例都将被视为单独的行。 例如 -
"Hello\nWorld\nThis\nIs\t"
第一个方法:
private static int countLines(String str){
String[] lines = str.split("\r\n|\r|\n");
return lines.length;
}
第二个方法:
String yourInput = "...";
Matcher m = Pattern.compile("\r\n|\r|\n").matcher(yourInput);
int lines = 1;
while (m.find())
{
lines ++;
}
这样,您无需将String拆分为许多新的String对象,这些对象稍后将由垃圾收集器清理。 (使用String.split(String);时会发生这种情况)。
第三个方法:
public static int countLines(String str) {
if(str == null || str.isEmpty())
{
return 0;
}
int lines = 1;
int pos = 0;
while ((pos = str.indexOf("\n", pos) + 1) != 0) {
lines++;
}
return lines;
}
一个不创建String对象,数组或其他(复杂)对象的非常简单的解决方案,请注意,如果使用其他EOL终止符,则需要稍微修改此示例。
第四个方法:
import org.apache.commons.io.FileUtils;
int getNumLinesInFile(File file) {
String content = FileUtils.readFileToString(file);
return content.split(System.getProperty("line.separator")).length;
}
此方法是万一您需要从文件中读取内容(我知道您说过没有,但这仅供以后参考),我建议使用Apache Commons将文件内容读取为字符串。 这是一个很棒的库,还有许多其他有用的方法。 这是一个简单的例子。
第五个方法:
public static int countLines(String input) throws IOException {
LineNumberReader lineNumberReader = new LineNumberReader(new StringReader(input));
lineNumberReader.skip(Long.MAX_VALUE);
return lineNumberReader.getLineNumber();
}
LineNumberReader位于java.io软件包中:[https://docs.oracle.com/javase/7/docs/api/java/io/LineNumberReader.html]