開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の8章(ファイル処理)、8.8(練習問題)、2.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
8.8(練習問題)、2.
コード
sample.dart
import 'dart:html';
void main(){
var run = querySelector('#run'),
clear = querySelector('#clear'),
pre0 = querySelector('#pre0'),
reader = new FileReader();
InputElement input = querySelector('#f0');
run.onClick.listen((MouseEvent event){
var result = window.navigator.userAgent + '\n';
try {
File file = input.files[0];
reader.readAsText(file);
reader.onLoad.listen((Event event){
String text = reader.result;
result += '元のテキスト\n';
result += '$text\n';
for (var item in readWeatherData(text)){
result += '$item\n';
}
pre0.text = result;
});
} catch (e){
result += e.toString();
pre0.text = result;
}
});
clear.onClick.listen((MouseEvent event) => pre0.text = '');
}
List<List<num>> readWeatherData(String s){
List<List<List<num>>> result = [];
var fields = [[[4, 'int'], [2, 'int'], [2, 'int']],
[[2, 'int'], [2, 'int'], [2, 'int']],
[[2, 'int'], [2, 'int'], [2, 'int']],
[[6, 'double'], [6, 'double'], [6, 'double']]];
s = s.trim();
List<String> lines = s.split('\n');
for(String line in lines){
int start = 0;
List record = [];
for(List field in fields){
print(field);
List<num> group = [];
for (List f in field){
int width = f[0];
String t = f[1];
print(line);
String text = line.substring(start, start + width);
num value = t == 'int' ? int.parse(text) : double.parse(text);
group.add(value);
start += width;
}
record.add(group);
}
result.add(record);
}
return result;
}
0 コメント:
コメントを投稿