none
c# diziden indexof araması yapamamak RRS feed

  • Soru

  • örnek olarak
    StreamReader SR = new StreamReader(@"C:\Users\%username%\Desktop\Yeni klasör\jsdos.js");
    
    string metin = SR.ReadLine();
    while (metin != null)
    {
    if (metin.IndexOf("var") > -1)
    {
    int s = metin.IndexOf("var");
    int s1 = metin.IndexOf("=");
    string edit = metin.Substring(s + 3, s1 - s - 3);
    listBox1.Items.Add(edit);
    degiskenhal[say] = edit;
    metin = metin.Replace(edit, " degisken" + say+" ");
    say++;
    
    }
    richTextBox1.Text = richTextBox1.Text + metin + "\n";
    metin = SR.ReadLine();
    }
    sec = richTextBox1.Text;
    SR.Close();

    -------------buradaki index of komutu çalışmıyor
    //degiskenhal[8] in değeri "hiz" mesala bunu degiskenhal[8].ToString()) yerine "hiz" olarak değiştirdiğimde çalışıyor fakat bu halde -1 değeri dönüyor neden olduğunu çözemedim
    if (richTextBox1.Text.IndexOf(degiskenhal[8].ToString())>-1)
    {
    MessageBox.Show("11111");
    }
    -------------------------------

    metin değişkeninde biraz uzun javascript kodları var burada değişkenleri otomatik değiştirmeye çalışıyorum fakat if komutu çalışmıyor neden olabilir ?
    • Düzenleyen Serkan Canseven 29 Aralık 2015 Salı 21:02 Mesaj gövdesi düzeltildi. Kod blokları eklendi.
    29 Aralık 2015 Salı 20:03

Yanıtlar

  • Ya guzel kardesim, herkes senin kadar genc ve keskin goruslu degil, neden kodu okunmaz hale getirebilmek icin bu kadar ugrasiyorsun :( Soruyu gormek, kodu ayirabilmek cevabi bulmaktan zor.

    if komutu calisiyor, ve zaten if komutu her zaman calisir. Calismiyor da ne oluyor? Hata mi veriyor. -1 donmesinin sucunu ne diye if komutuna yikiyorsun ki? Boyle bir kodla, sans eseri -1 disinda bir deger de cikabilirdi. Bak sen kodunda ne yapiyorsun:

    • "var" olan satirlari buluyorsun
    • var'dan sonraki degiskenin ismini bir arraye alip, onu degiskenN olarak degistiriyorsun (daha dogrusu yapmaya calistigin o, kod hatali ancak sans eseri calisabilecek bir metin dosyasina denk gelmissindir, hata vermeyebilir).
    • En sonunda array'e sakladigin fakat degiskenN olarak degistirdigin metini ariyorsun. Artik olmadigi icin de -1 aliyorsundur. Gayet normal. "hiz" olarak degistirince buluyorum diyorsun ama oradaki olay aslinda ornegin sunun gibi bir seydir:
    var degisken8 = 0;
    if (hiz>0)

    Sen de aramani 

    if (richTextBox1.Text.IndexOf(degiskenhal[8].Trim())>-1)

    diye yapsan aynisini bulursun (var ile ilgili olani degil, onu "degisken8" yaptin). 

    Not: Kodun o kisminin "calismamasi" (ki aslinda calisiyor) senin hayrina olmus. Boyle bir kodla bul-degistir islemi yapilmaz. Genel olarak cok hatali bir kod olmus.


    • Yanıt Olarak İşaretleyen theowel 29 Aralık 2015 Salı 23:47
    29 Aralık 2015 Salı 20:51
    Yanıtlayıcı

Tüm Yanıtlar

  • Ya guzel kardesim, herkes senin kadar genc ve keskin goruslu degil, neden kodu okunmaz hale getirebilmek icin bu kadar ugrasiyorsun :( Soruyu gormek, kodu ayirabilmek cevabi bulmaktan zor.

    if komutu calisiyor, ve zaten if komutu her zaman calisir. Calismiyor da ne oluyor? Hata mi veriyor. -1 donmesinin sucunu ne diye if komutuna yikiyorsun ki? Boyle bir kodla, sans eseri -1 disinda bir deger de cikabilirdi. Bak sen kodunda ne yapiyorsun:

    • "var" olan satirlari buluyorsun
    • var'dan sonraki degiskenin ismini bir arraye alip, onu degiskenN olarak degistiriyorsun (daha dogrusu yapmaya calistigin o, kod hatali ancak sans eseri calisabilecek bir metin dosyasina denk gelmissindir, hata vermeyebilir).
    • En sonunda array'e sakladigin fakat degiskenN olarak degistirdigin metini ariyorsun. Artik olmadigi icin de -1 aliyorsundur. Gayet normal. "hiz" olarak degistirince buluyorum diyorsun ama oradaki olay aslinda ornegin sunun gibi bir seydir:
    var degisken8 = 0;
    if (hiz>0)

    Sen de aramani 

    if (richTextBox1.Text.IndexOf(degiskenhal[8].Trim())>-1)

    diye yapsan aynisini bulursun (var ile ilgili olani degil, onu "degisken8" yaptin). 

    Not: Kodun o kisminin "calismamasi" (ki aslinda calisiyor) senin hayrina olmus. Boyle bir kodla bul-degistir islemi yapilmaz. Genel olarak cok hatali bir kod olmus.


    • Yanıt Olarak İşaretleyen theowel 29 Aralık 2015 Salı 23:47
    29 Aralık 2015 Salı 20:51
    Yanıtlayıcı
  • Üstadım öncelikle cevabınız için çok teşekkür ederim. Kod olarak çok hatalı demişsiniz hocam fakat programdaki amacım satır satır yazılmış javascript kod bütünüm var. Buradaki var dan sonraki değişkenleri sırası ile degisken[sayı++] şeklinde diziye atıyorum diziye attıktan sonra replace işlemi yapıp not defterinde olduğu gibi richBox1 e aktarıyorum. Değişkenleri değiştirdikten sonrada alt satırda değiştirilmemiş değişkenler için array daki hafızadan varlığına göre onlarıda değiştiricektim örnek:

    //mesala hocam burada "kokdegeri" değişkenini ilk olarak diziye atıyorum ondan sonra degisken0 olarak replace ediyorum.
    var kokdegeri = parseInt($("#text1").val())
    $("#kok1sonuc").val(pozitif);
    $("#csbuton").on('click',function(){
     
    	kokdegeri = kokdegeri + 1; // yukarda değiştirdim tamam ama burda da değiştirmem gerekiyor yukarıda da eşitliği verdim zaten degisken[0] = kokdegeri 
    
    	});

    //Hocam bu komutun öncesinde degiskenhal çalışıyormu diye kontrol ediyordum zaten messageboxda bana "hiz" olarak gösteriyordu. Ama if komutunda -1 değerini döndürüyordu. Boşluğun buna neden olacabileceğini hiç düşünemedim hocam. 
    MessageBox.Show(degiskenhal[8].ToString());
    if (richTextBox1.Text.IndexOf(degiskenhal[8].ToString())>-1)
    {
    MessageBox.Show("11111");
    }
    
    Sonuç olarak .Trim() de sorunsuz olarak çalışıyor çok teşekkür ederim.. 
    29 Aralık 2015 Salı 23:45
  • Ben yine de uyarayim, sadece calisiyormus gibi gorunuyor.
    30 Aralık 2015 Çarşamba 01:37
    Yanıtlayıcı
  • Teşekkür ederim hocam uyarınız için tam haline bakabilirsiniz.. http://s8.dosya.tc/server/xkryig/changevar.rar.html
    30 Aralık 2015 Çarşamba 09:39
  • Sanirim benim uyari bir kulaktan girip otekinden hizla cikiyor :)

    //mesala hocam burada "kokdegeri" değişkenini ilk olarak diziye atıyorum ondan sonra degisken0 olarak replace ediyorum.
    var text1 = "kokdegeri - cifte problem yaratmanin yollari:)";
    
    var kokdegeri = parseInt($("#text1").val())
    $("#kok1sonuc").val(pozitif);
    $("#csbuton").on('click',function(){
     
    	kokdegeri = kokdegeri + 1; // yukarda değiştirdim tamam ama burda da değiştirmem gerekiyor yukarıda da eşitliği verdim zaten degisken[0] = kokdegeri 
    
    	});
    • Illa degistireceksen Regular Expression'lara bak. 
    • Neden degistiriyorsun ki? Parametrenin adi p1 olsa ne olur, sayininKokDegeri olsa ne olur.
    30 Aralık 2015 Çarşamba 10:02
    Yanıtlayıcı
  • Hocam demek istediğinizi çok iyi anladım :)).  Ben size durumu biraz açıyım javascript dersinden sınav oluyoruz sınıf 60 kişi hoca 2 program yapmamızı istiyor soruları yazıp dersten çıkıyor ders bitiminde geliyor yardımlaşmak serbest. Durum böyle olunca sınıfta yapabilen 2-3 kişi var. Sırayla herkes geliyor flashı takıyor kanka atıversene. Hocam şimdi atmasam adam kalıcak gerçekten anlamıyor çünkü. Gelene atıyorum değişkenleri değiştirmemiz gerek hoca aynısı olunca kabul etmiyor, adam değişkenleri değiştiriyor programı bozuyor. Sınavda kendi programımı bıraktım sırayla sınıfı dolaşıyorum sınavdan en son ben çıkıyorum. Yapamayaları düzeltmekten çok vakit kaybediyorum. Bende dedim değişkenleri sıralı olarak değiştiren bir program yapıyım en azından sınavda adama bu dosyayı verdiğimde degisken0 ların hepsini sayikok1 olarak değiştirsin diğer türlü bende kendi algoritmamda karışık yapıyorum biraz bir yeri değiştirmeyi unutuyorlar sonra hatanın nerde olduğunu aramaya başlıyoruz.Ben adama verdiğimde kendimdeki değişkenleride değiştirmek zorunda kalıyordum aynısını veren oluyordu değiştirmeden bu sefer benim başım yanıcaktı bu yüzden böyle bişey yaptım hocam. Hataya gelicek olursak

    var text1 = "kokdegeri - cifte problem yaratmanin yollari:)"; var kokdegeri = parseInt($("#text1").val())

    Hocam programı zaten kendi yazdığım javascriptlerden replace edeceğimden buradaki text1 hatasını yapmamaya çalışırım. Hani onada dikkat edivereyim dediğim için böyle bıraktım size çok teşekkür ederim ilginiz için..

    30 Aralık 2015 Çarşamba 12:12
  • Iyi:) Bari string.Replace yerine Regex.Replace kullan, daha saglam olur:

    Regex.Replace(code, @" \bkokdegeri\b", " degisken0");
    

    30 Aralık 2015 Çarşamba 12:55
    Yanıtlayıcı
  • Teşekkür ederim hocam düzelttim :))
    30 Aralık 2015 Çarşamba 17:02