📄 lineanalysis.java
字号:
package operation;
//按行分析文本类
public class LineAnalysis {
private int lineAmount; // 文本行数
private String[] lines; // 所有行的集合
// 构造函数
// text 为要分析的文本
public LineAnalysis(String text) {
lineAmount = countLineAmount(text); // 计算并保存行数
lines = saveLines(text); // 计算并保存每一行
}
// 获取行数
public int getLineAmount() {
return lineAmount;
}
// 获取所有行集合
public String[] getLines() {
return lines;
}
// 获取第NO行
// NO错误则返回null
public String getLine(int NO) {
if (NO < 0 || NO >= lineAmount) {
return null;
}
return lines[NO];
}
// 判断是否换行
private boolean isNewline(char c) {
if (c == '\n') {
return true;
} else {
return false;
}
}
// 返回文本的行数
// text 文本
private int countLineAmount(String text) {
int i = 0, len = 0, amount = 0;
len = text.length(); // 获取文本长度
for (i = 0, amount = 1; i < len; i++) { // 扫描文本 找到换行符amount++
if (isNewline(text.charAt(i))) {
amount++;
}
}
return amount;
}
// 返回文本每一行开始位置
// text 文本
private int[] countLineStart(String text) {
int[] lineStart = new int[lineAmount];
int i = 0, j = 0, len = 0;
len = text.length();
lineStart[0] = 0; // 初始行
for (i = 0, j = 1; i < len; i++) { // 扫描文本 记录换行符位置
if (isNewline(text.charAt(i))) {
lineStart[j] = i + 1; // 下一行开始为换行符后一个字符
j++;
}
}
return lineStart;
}
// 返回文本每一行
// text 文本
private String[] saveLines(String text) {
int[] lineStart = countLineStart(text); // 获取行开始位置
lines = new String[lineAmount];
int i = 0;
for (i = 0; i < lineAmount - 1; i++) { // 记录0到lineAmount-2行
lines[i] = new String(text
.substring(lineStart[i], lineStart[i + 1]-1));
}
lines[i] = new String(text.substring(lineStart[i])); // 记录最后一行
return lines;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -