قراءة سجلات CSV وحقولها، ومنها حقل بين علامتي تنصيص فيه فاصلة
// قراءة سجلات CSV وحقولها، ومنها حقل بين علامتي تنصيص فيه فاصلة.
استورد std.io.println;
استورد std.text.number;
استورد std.csv.csv;
عرف الرئيسية(): عدد {
دع المصدر: نص = "الاسم,المدينة\nنور,\"الرياض, السعودية\"\nآدم,تورنتو\n";
طابق حلل_سي_اس_في(&المصدر) مع
| نتيجة.خطأ(_) -> { اطبع_سطر("ملف CSV غير صالح"); أرجع 1; }
| نتيجة.نجح(الوثيقة) -> {
اطبع_سطر(طبيعي_إلى_نص(عدد_سجلات_سي_اس_في(&الوثيقة)));
طابق سجل_سي_اس_في_عند(&الوثيقة, 1) مع
| اختياري.لا_شيء -> { أرجع 2; }
| اختياري.موجود(السجل) -> {
اطبع_سطر(طبيعي_إلى_نص(عدد_حقول_سي_اس_في(&السجل)));
طابق حقل_سي_اس_في_عند(&السجل, 1) مع
| اختياري.موجود(المدينة) -> { اطبع_سطر(المدينة); }
| اختياري.لا_شيء -> { };
};
};
أرجع 0;
}// Reading CSV records and fields, including a quoted field with a comma.
import std.io.println;
import std.text.number;
import std.csv.csv;
def main(): int {
let source: string = "name,city\nNoor,\"Riyadh, KSA\"\nAdam,Toronto\n";
match parse_csv(&source) with
| result.err(_) -> { println("invalid csv"); return 1; }
| result.ok(document) -> {
println(uint_to_text(csv_record_count(&document)));
match csv_record_at(&document, 1) with
| option.none -> { return 2; }
| option.some(record) -> {
println(uint_to_text(csv_field_count(&record)));
match csv_field_at(&record, 1) with
| option.some(city) -> { println(city); }
| option.none -> { };
};
};
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/formats/csv.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/formats/csv.sn -o build/example && ./build/example