none
C#- ASP.Net Regex ile url bulma ve link olarak değiştirme RRS feed

  • Soru

  • merhabalar bir string içerisindeki url'leri bulup onu linke çeviren bir kodum var. aşağıdaki gibi

    Regex rgxUrls = new Regex(@"(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)");
                return rgxUrls.Replace(gelen, "<a href=\"$1\"> $1 </a>");

    kod gayet güzel çalışıyor. https://social.msdn.microsoft.com/Forums/tr-TR/newthread linkini bulunca <a href="https://social.msdn.microsoft.com/Forums/tr-TR/newthread" target="_blank">https://social.msdn.microsoft.com/Forums/tr-TR/newthread</a> şeklinde getiriyor. 

    Benim istediğim ise bu linki aşağıdaki gibi göstermek

    <a href="https://social.msdn.microsoft.com/Forums/tr-TR/newthread" target="_blank">https://social.msdn.microso...</a>

    bunu yapmak için eşleşen değeri $1 olan yani nasıl editleyebilirim. Yani string olarak elde edebilirsem parçalayıp istediğim linke çevireceğim.

    16 Nisan 2016 Cumartesi 12:24

Yanıtlar

  • belki daha kısa yolu vardır.

    string gelen="https://social.msdn.microsoft.com/Forums/tr-TR/newthread";

    string gelen="https://social.msdn.microsoft.com/Forums/tr-TR/newthread";
    Regex rgxUrls = new Regex(@"(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:\/~\+#]*[\w\-\@?^=%&amp;\/~\+#])?)");
    string u=rgxUrls.Replace(gelen, "$1");
    return string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>",u,u.Substring(0,25)+"...");

    Yalnız regex'iniz hatalı. "gelen" içinde "." geçen her şeyi url olarak kabul ediyor. 

    http://soapbox.github.io/linkifyjs/

    gibi bir tool kullanabilirsiniz. Ayrıca artık target="_blank" tarihe karıştı:)


    http://pgnchess.com


    16 Nisan 2016 Cumartesi 12:52

Tüm Yanıtlar

  • belki daha kısa yolu vardır.

    string gelen="https://social.msdn.microsoft.com/Forums/tr-TR/newthread";

    string gelen="https://social.msdn.microsoft.com/Forums/tr-TR/newthread";
    Regex rgxUrls = new Regex(@"(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:\/~\+#]*[\w\-\@?^=%&amp;\/~\+#])?)");
    string u=rgxUrls.Replace(gelen, "$1");
    return string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>",u,u.Substring(0,25)+"...");

    Yalnız regex'iniz hatalı. "gelen" içinde "." geçen her şeyi url olarak kabul ediyor. 

    http://soapbox.github.io/linkifyjs/

    gibi bir tool kullanabilirsiniz. Ayrıca artık target="_blank" tarihe karıştı:)


    http://pgnchess.com


    16 Nisan 2016 Cumartesi 12:52
  • belki daha kısa yolu vardır.

    string gelen="https://social.msdn.microsoft.com/Forums/tr-TR/newthread";

    string gelen="https://social.msdn.microsoft.com/Forums/tr-TR/newthread";
    Regex rgxUrls = new Regex(@"(((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:\/~\+#]*[\w\-\@?^=%&amp;\/~\+#])?)");
    string u=rgxUrls.Replace(gelen, "$1");
    return string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>",u,u.Substring(0,25)+"...");

    Yalnız regex'iniz hatalı. "gelen" içinde "." geçen her şeyi url olarak kabul ediyor. 

    http://soapbox.github.io/linkifyjs/

    gibi bir tool kullanabilirsiniz. Ayrıca artık target="_blank" tarihe karıştı:)


    http://pgnchess.com


    merhaba sizin verdiğiniz kodu kullandığım zaman bütün stringi alıp url linki olarak veriyor. benim istediğim ise link içindeki url'leri replace etmek. linkifyjs bu konuyu çözüyor gibi duruyor. onu deneyeceğim.
    17 Nisan 2016 Pazar 09:21