Şimdi Ara

c# ile text dosyasından okunan kelimeleri sadeleştirmek?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
4.168
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadaşlar bi text dosyasından kelimeleri okuyorum fakat bu okuma işlemini satır satır yapıyorum ve split(' ') fonksiyonunu kullanarak boşluğa göre bölüyorum satırları fakat mesela atıyorum iki kelime arasında birden çok boşluk var onu nasıl yapcam? aşağıda yazdığım fonksiyon çalışıyo ama eksikleri var sanırım noktayı virgülü falan almamam lazım zatne onları almıyo ama mesela atıyorum birden çok boşluk olduğu zaman o boşluklarıda bölüyo kendi arasında ve buda hataya yol açıyo uzun lafın kısası okuduğum satırları bir diziye kelime kelime atmak için ne yapmam lazım???

    teşekkürler...

    static void tokenizer(ref string str) 
    {
    int max = str.Length-1;
    string temp = str;
    for (int i = 0; i <= max; i++ )
    {
    if (i < str.Length)
    {
    if (!((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')))
    {
    str = str.Remove(i, 1);
    i--;
    }
    }
    else
    {
    break;
    }
    }
    }







  • if kullan gelen değer boşsa atlasın, yani boş değerler gelince diziye atmasın.



    < Bu mesaj bu kişi tarafından değiştirildi gergozen -- 6 Aralık 2009; 0:40:03 >
  • quote:

    Orijinalden alıntı: PaBLoEsCoBaR

    arkadaşlar bi text dosyasından kelimeleri okuyorum fakat bu okuma işlemini satır satır yapıyorum ve split(' ') fonksiyonunu kullanarak boşluğa göre bölüyorum satırları fakat mesela atıyorum iki kelime arasında birden çok boşluk var onu nasıl yapcam? aşağıda yazdığım fonksiyon çalışıyo ama eksikleri var sanırım noktayı virgülü falan almamam lazım zatne onları almıyo ama mesela atıyorum birden çok boşluk olduğu zaman o boşluklarıda bölüyo kendi arasında ve buda hataya yol açıyo uzun lafın kısası okuduğum satırları bir diziye kelime kelime atmak için ne yapmam lazım???

    teşekkürler...


    Split'ten önce, cümledeki çift boşlukları (var olduğu sürece bir döngü ile) tek boşluk ile değiştirmek (Replace) yeterli olacaktır...

     
    string a = "sdlfkjsdlkf sdflksdfsd sdfsdfsdf sdfsdf";
    string[] b;
    while (a.Contains(" "))
    a = a.Replace(" ", " ");
    b = a.Split(' ');




  • iyide mesela atıyorum 10 boşluk varsa veya 15 boşluk varsa?

    sadece 2 ve tek boşluk yok
  • Eğer gelen karakter boşluksa (yani if) bir sonrakine geç de döngüde. o zaman tüm boşlukları atlarsın.
    Ya da javada default olarak var olan basit bir tokenizer yaparsın ki amacın da bu zaten
    (c#'ı pek bilmiyorum javayı da bilmezdim bildiğimi de unuttum ama bu kadarını yapabilirim GOOLE IN KATKILARIYLA TABİ).
    Mümkün olduğunca commentli yapmaya çalıştım, sanırım açık olmuştur. tabi çok kod varmış gibi oluyor ama kısa bi kod aslında...

    quote:


    //işlenecek string türünde txtİslenecek tanımlanır ve değeri verilir
    string txtİslenecek = "burada virgül, boşluk ve satır başı tab ,, vb karakterler atılacak. nokta chararray'e eklenirse atılacak şimdilik atılmayacak.";

    //jeton oluşturucu (srtingtokenizer) için bölücü karakterler belirlenir ve sinirlayiciler dizisine atılır
    char [] sinirlayiciler = ", \t\n\r".ToCharArray();

    //txtİslenecek metni sinirlayiciler (delimiters) ile parçalanır ve textDizisi'ne atılır
    string[] textDizisi = txtİslenecek.Split(sinirlayiciler);


    foreach (string jeton in textDizisi)
    {


    if (jeton.Length == 0) continue;

    //if (jeton == "") continue; da diyebilirdik ama bu daha güzel bi kullanım

    //string tipli a değişkenine jeton atılır
    //(burada her jeton bir kelime olacak)
    string a = jeton.Trim().ToString();

    //arkadaşın replace fonksiyonu aklıma bir sağlama daha getirdi
    //a gelirse * ile ve boşluk gelirse boşluk ile değiştir
    //böylece a'lar değişince ve hiç boşluk yazısına rastlamayınca çalıştığını anlayacağım
    a = a.Replace("a", "*"); a = a.Replace(" ", "boşluk");

    //textDizisi elemanları tek tek mesajbox içine yazdırılır.
    //istenmeyen karakter olup/olmadığı gözlenir
    //burada ekrana yazdırmak yerine diziye atanabilir.
    MessageBox.Show(a);

    }




    < Bu mesaj bu kişi tarafından değiştirildi gergozen -- 8 Aralık 2009; 23:37:19 >




  • quote:

    Orijinalden alıntı: PaBLoEsCoBaR

    iyide mesela atıyorum 10 boşluk varsa veya 15 boşluk varsa?

    sadece 2 ve tek boşluk yok


    kodu denememişsin galiba. zira kod 2'den fazla olanları da teke indiriyor.
    10 boşluk varsa döngü içinde ilk önce 9'a sonra 8'e iniyor ve 1'e inene kadar döngü devam ediyor...

    kısa ve efektif bir kod, denemeni tavsiye ederim.
  • hocam üzerinde çalıştığın text dosyası hakkında bir bölümünü örnek olarak yazarsan buradaki herkes daha kolay yardımcı olacaktır sanırım..
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • quote:

    Orijinalden alıntı: recaihercai

    Split'ten önce, cümledeki çift boşlukları (var olduğu sürece bir döngü ile) tek boşluk ile değiştirmek (Replace) yeterli olacaktır...

     
    string a = "sdlfkjsdlkf sdflksdfsd sdfsdfsdf sdfsdf";
    string[] b;
    while (a.Contains(" "))
    a = a.Replace(" ", " ");
    b = a.Split(' ');



  • Konuyu hortlattigim icin kusura bakmayin, c# dilinde yeni biri olarak benim de sizlere bir sorum olacak. Aşağıda verdiğim tarzda bir metin dosyasından en solda 1 yazan satırlardan 30.000, 40.000 gibi bilgileri cekip listbox gibi bir kısımda goruntuleyecek ve bu listenin herhangi bir elemanina tiklandiginda ornegin 30.000 tiklandiginda

    -55660286,518.4844996 seklinde x,y formatında liste yapabilecek bir algoritma lazım. Bir miktar kafa yordum, parse ve split ile ilgili ornekleri arastiriyorum fakat henuz isin icinden cikamadim. Bu konuda yardimci olabilecek varsa cok sevinirim.




    1 9999 30.000
    0 -5.5660286 518.4844996 KDO
    0 -4.0000000 519.5285187 YKO
    0 0.0000000 519.5272727 EKS
    0 4.5000000 519.5258710 YKA
    0 9.9402519 515.8990364 KDA
    1 9999 40.000
    0 -5.5283673 517.2665577 KDO
    0 -4.0000000 518.2854692 YKO
    0 0.0000000 518.3363636 EKS
    0 4.5000000 518.3936199 YKA
    0 14.7197792 511.5804338 KDA

     c# ile text dosyasından okunan kelimeleri sadeleştirmek?




  • baştaki hep 1 ile diğerleri hep 0 ile başlıyor dimi



    < Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 21 Ekim 2015; 11:33:05 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.