先定義 model 的 Parser interface:
interface Parser {
string Parse(string s);
}
接著實做 Parser interface:
class ProfitabilityIndicatorParser : Parser {以上就是 model。
public string Parse(string s) {
result.Remove(0, result.Length);
result.Append("期別 毛利率 營益率 盈利率\n");
string[] lines = s.Split(new char[] { '\n', '‧' });
int year = 0;
foreach (string line in lines) {
if (line.Contains("年度")) {
year = Convert.ToInt32(
line.Trim().Substring(0, line.IndexOf("年度")));
} else {
ParseRecord(line, year);
}
}
return result.ToString();
}
private void ParseRecord(string record, int year) {
string[] tokens = record.Trim().Split(' ');
if (tokens.Length != 5) {
return;
}
else if (record.Contains("四")) {
result.Append(year).Append(".4Q ");
}
else if (record.Contains("三")) {
result.Append(year).Append(".3Q ");
}
else if (record.Contains("二")) {
result.Append(year).Append(".2Q ");
}
else if (record.Contains("一")) {
result.Append(year).Append(".1Q ");
} else {
return;
}
result.Append(tokens[1]).Append(" ");
result.Append(tokens[2]).Append(" ");
result.Append(tokens[4]).Append("\n");
}
StringBuilder result = new StringBuilder();
}
使用者介面很簡單,隨便用 Windows Form 拉一拉就可以了。底下是主要的 control code snippet:
public partial class MainForm : Form {因為夠簡單,所以直接把 control 做在 view 裡面。以上就是我寫的小工具。
private void parseButton_Click(object sender, EventArgs e) {
splittingTextBox.Text = parser.Parse(sourceTextBox.Text);
}
Parser parser = new ProfitabilityIndicatorParser();
}
沒有留言:
張貼留言