2011年4月11日 星期一

小工具: ProfitabilityIndicatorParser

ProfitabilityIndicatorParser 能夠擷取HTS看盤軟體三大獲利能力資料。

先定義 model 的 Parser interface:
interface Parser {
string Parse(string s);
}

接著實做 Parser interface:
class ProfitabilityIndicatorParser : Parser {
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();
}
以上就是 model。

使用者介面很簡單,隨便用 Windows Form 拉一拉就可以了。底下是主要的 control code snippet:
public partial class MainForm : Form {
private void parseButton_Click(object sender, EventArgs e) {
splittingTextBox.Text = parser.Parse(sourceTextBox.Text);
}

Parser parser = new ProfitabilityIndicatorParser();
}
因為夠簡單,所以直接把 control 做在 view 裡面。以上就是我寫的小工具。

沒有留言:

張貼留言