none
Tek seferde çoklu replace yapma RRS feed

  • Soru

  • string Deger = "<Ay>06</Ay>"
    Tek seferde hem <Ay> hemde </Ay> değerini replace ile nasıl silebilirim ? Replace komutunu iki kez çalıştırıp birincisinde <Ay> ikincisinde </Ay> karakterlerini sildiriyorum şu an...
    27 Temmuz 2019 Cumartesi 10:44

Yanıtlar

  • XML dökümanı replace ile parse ediyormuşsun gibi bir algı oluştu, birden bir ürperti geldi bana, dur bakalım hayırlısı;

    var Deger = "<Ay>06</Ay>";
    var sonuç = Regex.Replace(Deger,@"<Ay>([0-9]+)</Ay>", "$1")


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    • Düzenleyen Önay YALÇINER 27 Temmuz 2019 Cumartesi 12:24
    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 27 Temmuz 2019 Cumartesi 12:55
    • Yanıt Olarak İşaretleyen XentoX 27 Temmuz 2019 Cumartesi 20:31
    27 Temmuz 2019 Cumartesi 12:24

Tüm Yanıtlar

  • Belkide silmek yerine içini okumalısınız.Mesela :

    string sonuc = Regex.Match("<Ay>06</Ay>", @"\d+").Value;


    • Yanıt Olarak Öneren CetinBasoz 27 Temmuz 2019 Cumartesi 13:40
    27 Temmuz 2019 Cumartesi 11:08
  • string Deger = "<Ay>06</Ay>";
    Console.WriteLine(Regex.Replace(Deger, "(<Ay>)|(</Ay>)",""));
    

    Bu kadar basit bir string ile sorunsuz olmakla beraber, gercek kullanacaginiz yerde bu isinize yarayamayabilir. Bu bir XML tarzı string olduguna gore, belki de Linq kullanmanız daha akillica olacaktir:

    void Main()
    {
        string Deger1 = "<Ay>06</Ay>";
    	string Deger2 = "<Ay>06</Ay><Ay>07</Ay><Ay>08</Ay><Ay>09</Ay>";
    	Console.WriteLine(Regex.Replace(Deger1, "(<Ay>)|(</Ay>)", ""));
    	Console.WriteLine(Regex.Replace(Deger1, "(<Ay>)|(</Ay>)", ""));
    
    
    	var elements1 = XElement.Parse($"<root>{Deger1}</root>").DescendantsAndSelf("Ay").Select(xe => new {Ay=(string)xe});
    	var elements2 = XElement.Parse($"<root>{Deger2}</root>").DescendantsAndSelf("Ay").Select(xe => new {Ay=(int)xe});
    	
    	Console.WriteLine("Elements1");
    	foreach (var element in elements1)
    	{
    		Console.WriteLine(element.Ay);
    	}
    	Console.WriteLine("Elements2");
    	foreach (var element in elements2)
    	{
    		Console.WriteLine(element.Ay);
    	}
    }
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    27 Temmuz 2019 Cumartesi 11:50
  • XML dökümanı replace ile parse ediyormuşsun gibi bir algı oluştu, birden bir ürperti geldi bana, dur bakalım hayırlısı;

    var Deger = "<Ay>06</Ay>";
    var sonuç = Regex.Replace(Deger,@"<Ay>([0-9]+)</Ay>", "$1")


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    • Düzenleyen Önay YALÇINER 27 Temmuz 2019 Cumartesi 12:24
    • Yanıt Olarak Öneren Mehmet Emin Kaymaz 27 Temmuz 2019 Cumartesi 12:55
    • Yanıt Olarak İşaretleyen XentoX 27 Temmuz 2019 Cumartesi 20:31
    27 Temmuz 2019 Cumartesi 12:24
  • Teşekkürler tüm yanıtlar için... Aslında yapmaya çalıştığım farklı bir şey. Daha önce kullanmadığım yöntem olan  XML okuma yazma ile bunu yapmayı denedim.

    Şöyle ki;

    A ve B adlı iki farklı programım var. A içerisinde bir butona basınca B açılıyor bazı görevleri var onu yapıp kapanıyor. Benim A içerisinde şayet checkbox işaretli ise bir değişkeni B nin içerisine göndermem lazım ve B programında yapılacak iş bu değişken ile yapılmalı. 

    Checkbox işaretli ise ve butona basılırsa bir xml dosyası oluşturulup bunun içerisine değişken yazılıp ardından xml kapatılacak. Ardından B programı çalışacak. B programı çalıştığında exe'nin bulunduğu klasörde Tarih.xml dosyası var ise bunun içerisinden Ay değişkenini alıp işlemleri buna göre yapacak. İşlemler bitince Tarih.xml dosyasını silecek. Başlangıçta klasör içerisinde Tarih.xml dosyası yok ise normal kurallara göre işlemini yapacak...

    Değişken gönderimini xml'e veri yazıp okuyarak yapmayı denediğim için bu yönteme başvurdum. Aslında txt i de oluşturup bunu yapabilirdim fakat xml denemek istedim.

    Dediğiniz gibi replace yerine regex kullanımı daha mantıklı geldi... 

    27 Temmuz 2019 Cumartesi 20:31
  • Teşekkürler tüm yanıtlar için... Aslında yapmaya çalıştığım farklı bir şey. Daha önce kullanmadığım yöntem olan  XML okuma yazma ile bunu yapmayı denedim.

    Şöyle ki;

    A ve B adlı iki farklı programım var. A içerisinde bir butona basınca B açılıyor bazı görevleri var onu yapıp kapanıyor. Benim A içerisinde şayet checkbox işaretli ise bir değişkeni B nin içerisine göndermem lazım ve B programında yapılacak iş bu değişken ile yapılmalı. 

    Checkbox işaretli ise ve butona basılırsa bir xml dosyası oluşturulup bunun içerisine değişken yazılıp ardından xml kapatılacak. Ardından B programı çalışacak. B programı çalıştığında exe'nin bulunduğu klasörde Tarih.xml dosyası var ise bunun içerisinden Ay değişkenini alıp işlemleri buna göre yapacak. İşlemler bitince Tarih.xml dosyasını silecek. Başlangıçta klasör içerisinde Tarih.xml dosyası yok ise normal kurallara göre işlemini yapacak...

    Değişken gönderimini xml'e veri yazıp okuyarak yapmayı denediğim için bu yönteme başvurdum. Aslında txt i de oluşturup bunu yapabilirdim fakat xml denemek istedim.

    Dediğiniz gibi replace yerine regex kullanımı daha mantıklı geldi... 

    Tam da @önay abinin dediği serin yollardasınız.

    www.cihanyakar.com


    27 Temmuz 2019 Cumartesi 20:41
  • Teşekkürler tüm yanıtlar için... Aslında yapmaya çalıştığım farklı bir şey. Daha önce kullanmadığım yöntem olan  XML okuma yazma ile bunu yapmayı denedim.

    Şöyle ki;

    A ve B adlı iki farklı programım var. A içerisinde bir butona basınca B açılıyor bazı görevleri var onu yapıp kapanıyor. Benim A içerisinde şayet checkbox işaretli ise bir değişkeni B nin içerisine göndermem lazım ve B programında yapılacak iş bu değişken ile yapılmalı. 

    Checkbox işaretli ise ve butona basılırsa bir xml dosyası oluşturulup bunun içerisine değişken yazılıp ardından xml kapatılacak. Ardından B programı çalışacak. B programı çalıştığında exe'nin bulunduğu klasörde Tarih.xml dosyası var ise bunun içerisinden Ay değişkenini alıp işlemleri buna göre yapacak. İşlemler bitince Tarih.xml dosyasını silecek. Başlangıçta klasör içerisinde Tarih.xml dosyası yok ise normal kurallara göre işlemini yapacak...

    Değişken gönderimini xml'e veri yazıp okuyarak yapmayı denediğim için bu yönteme başvurdum. Aslında txt i de oluşturup bunu yapabilirdim fakat xml denemek istedim.

    Dediğiniz gibi replace yerine regex kullanımı daha mantıklı geldi... 

    Tam da @önay abinin dediği serin yollardasınız.

    www.cihanyakar.com


    Yazılım konusunda ben olaya farklı açıdan bakıyorum. Elbette şiir gibi kodlarla kısacık 2 satırla dünyalar kadar iş yaptırabilecek seviyede kişiler var, inşallah bende o seviyeye gelirim.

    Fakat olayın arka tarafını yani mutfak kısmını yazılımcı hariç kimse görmüyor. Dolayısıyla kullanıcının ihtiyacına cevap veren bir işi yapıyorsam neyi nasıl yaptığımı o bilmiyor ve bilmeyecek. Uzman bir yazılımcı exe'mi decompile edip böyle kod mu yazılır lan demediği sürece program ihtiyaca cevap veriyorsa sanırım yeterlidir.

    Yukarıda yaptığım fantezi mi evet fantezi gerek var mı hayır çok daha basit yollarla çözülebilir. 3 ay önce yazdığım kodu beğenmeyip bu ne a.q. diyen adamım. Tahminim 3 ay sonra bu mesajıma da böyle mantık mı olur diyeceğim. Fakat o seviyelere gelebilmem için illa bu yollardan geçmem lazım diye düşünüyorum...


    • Düzenleyen XentoX 27 Temmuz 2019 Cumartesi 21:46
    27 Temmuz 2019 Cumartesi 20:53
  • O kkişiler, o seviyeye böyle şeyler yaparak gelmediler haberin olsun.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    28 Temmuz 2019 Pazar 06:30

  • Fakat olayın arka tarafını yani mutfak kısmını yazılımcı hariç kimse görmüyor. Dolayısıyla kullanıcının ihtiyacına cevap veren bir işi yapıyorsam neyi nasıl yaptığımı o bilmiyor ve bilmeyecek. Uzman bir yazılımcı exe'mi decompile edip böyle kod mu yazılır lan demediği sürece program ihtiyaca cevap veriyorsa sanırım yeterlidir.

    Bence işten çıkartma sebebi :) Bunun neden kötü olduğunu paragraflarca yazabilirim ama tek kelime yeter : sürdürülebilirlik.

    www.cihanyakar.com

    28 Temmuz 2019 Pazar 07:53
  • Yukarida XML parse ornegi de var.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    30 Temmuz 2019 Salı 10:37