?? 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 + -