| |
 | Posted by erdem in reply to erdem | Permalink Reply |
|
erdem 
| Metni ayrıştırma kısmı da şık bir çözüm olmasa da şunun gibi oldu:
import std.string, std.stdio, std.regex;
string[] düzenlimetin;
void ayrıştır (string şimdiki, string sonraki) {
string sonuç = şimdiki;
tekrar:
auto başlangıç = match(sonuç, regex("<.>"));
auto bitiş = match(sonuç, regex("</.>"));
if (!başlangıç.empty
&&
!bitiş.empty) {
sonuç = başlangıç.post;
bitiş = match(sonuç, regex("</.>"));
sonuç = bitiş.pre;
// .. aşağıdakinin aynısı
düzenlimetin ~= sonuç;
} else if (!başlangıç.empty
&&
bitiş.empty) {
sonuç ~= " " ~ sonraki;
goto tekrar;
} else {
düzenlimetin ~= sonuç;
// aslında buraya DüzenliMetin'i oluşturan kod gelecek
}
}
void main() {
auto s4 = "<b>matematige";
auto s5 = "benzer</b>";
auto s6 = "sekilde";
auto s7 = "<u>bilgisayar</u>";
auto s8 = "bilimi";
auto s9 = "bilginin,";
auto s10 = "<p>ozellikle";
auto s11 = "elektronik";
auto s12 = "makineler";
auto s13 = "araciligiyla</p>";
ayrıştır(s4, s5);
writeln("Düzenlenmiş:", düzenlimetin);
}
Burada for döngüsünde bir sonraki kelimeye de erişebileceğimizi düşünerek yazdım.
foreach (kelime; kelimeler) {
// ...
}
Umarım erişebiliyoruzdur :)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
|