c# ile metin işleme

Başlatan sayz, 02 Mayıs 2011 - 16:41:12

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sayz

merhaba arkadaşlar şu şekilde bir ödevim var,
Ödevinizde; size verilecek olan kaynak metin üzerinde
    •  büyük harfli yazma
    •  koyu yazma
    •  gizleme
    • parantez koyma
olmak üzere dört farklı biçimleme işlemi yapmanız beklenmektedir. Metin üzerinde hangi
biçimleme işlemlerini nerede yapacağınız, "<" ve ">" işaretleri arasına yazılmış olan
biçimleme etiketleri ile verilmiş olacaktır. Bu biçimleme etiketlerinin anlamları şu şekilde
suralanabilir:
        <u>     : büyük harfle yazılacak alanın başlangıcı [açılış]
        </u>    : büyük harfle yazılacak alanın sonu [kapanış]
        <b>     : koyu (tekrarlı) yazılacak alanın başlangıcı [açılış]
        </b>    : koyu (tekrarlı) yazılacak alanın sonu [kapanış]
        <h>     : gizli (ekrana yazılmayacak) alanın başlangıcı [açılış]
        </h>    : gizli (ekrana yazılmayacak) alanın sonu [kapanış]
        <p>     : köşeli parantez bloğunun başlangıcı [açılış]
        </p>    : köşeli parantez bloğunun sonu [kapanış]
Okuma yapacağınız kaynak dosyada, yukarıda verilen biçimleme etiketlerinin de bulunduğu
bir metin yer alacaktır (Etiketler iç içe de yer alabilirler.). Hazırlayacağınız program, dosyanın
tamamını okuyarak bu etiketler uyarınca biçimleme yapacak ve metnin biçimlenmiş halini
(etiketler olmaksızın) ekrana yazdıracaktır.
Etiketlerin açılışları ve kapanışları, HTML dilinde olduğu gibi iç içe sıralı olmalıdır. Ödevinizde,
size verilen kaynak dosyadaki etiket dizilişini incelemeniz, etiketlerin yanlış açılıp-kapanması
ya da eksik etiketleme durumunda ekrana biçimlenmiş metin yerine "Kaynak dosyanin
bicimleme etiketleri hatalidir, kontrol ediniz." uyarı mesajını yazmanız beklenmektedir.
Etiket sıralamasını kontrol etmek için, yığıt veri yapısından yararlanmanız şarttır.

Stack tasarımını ve kontrol aşamalarını hallettim, gelen metinin hatalı olup olmadığını kontrol edebiliyorum. asıl önemli kısım olan metni işleme ksımında biraz tıknadım açıkçası örneğin bize aşağıdaki gibi bir metin verilirse:

<b>matematige benzer</b> sekilde <u>bilgisayar</u> bilimi bilginin, <p>ozellikle elektronik
makineler araciligiyla</p> duzenli ve ussal bicimde islenmesi bilimidir. <h>bunun yani sira</h>
bilgisayar bilimi bilgi islemlerinde uygulanabilen matematiksel yapilari da inceler. <u>amaci ve
<b>gorevi</b></u> bir <b><u>yandan</u></b> temel <b><p>aksiyomatik</p></b>
matematiksel <p><b>kuramlar</b></p> uretmek, ikinci olarak tum diger uzmanlik dallarinin
nesnelerini ve sureclerini cozumleyip soyut matematiksel yapilara ve algoritmalara
donusturmek ve <h><p><u><b>ucuncu olarak</b></u></p></h> soyut matematiksel yapilarin
aktarilabilecegi, saklanabilecegi ve algoritmalarla otomatik olarak islenebilecegi matematiksel
makinalari tasarlamaktir.


çıktısı şu şekilde olacak:


metni işlerken nasıl bir mantıktan gitmeliyim yardımcı olursanız sevinirim?

risperdal

Alıntı Yap
Hazırlayacağınız program, dosyanın
tamamını okuyarak bu etiketler uyarınca biçimleme yapacak ve metnin biçimlenmiş halini
(etiketler olmaksızın) ekrana yazdıracaktır.

Console application ile biçimleme işlemlerini nasıl gösterebileceksiniz anlayamadım. GUI'li bir uygulama olsa rich text editor gibi bir şey kullanarak mümkün ama sanki biraz çelişki var gibi.

Metin işleme kısmını regex ile yapabilirsiniz. Ama işlenmiş metini konsola ne şekilde yazdıracaksınız bilmiyorum :)

//düzenleme

Özür dilerim örnek çıktıyı dikkate almamışım :) Dediğim gibi regex replace ile yapabilirsiniz.

sayz

regex ile olabilir belki ama örneğin regex ile  <b> ile </b> arasındaki ifadeyi bulduk ve kalın(iki kere) yazdırdık peki burada araya başka bir tag girerse ne olacak orada regex çaresiz kalmaz mı? önce fonksiyon kullanılabilir gibi geldi bana  ama o zaman da işler daha da karışıyor. off :-\