2011-12-03 19 views
11

Bunu anlamaya çalışırken bir sorun yaşıyorum. Dizeden belirli bir karaktere ulaşıncaya kadar metni kaldırın

  • www.site.com/index.php?REMOVETHISHERE
    1. www.site.com/link/index.php?REMOVETHISHERE: Burada bir örnek, bazı bağlantılar "düzeltmek" için gereken

      Temel olarak, her şeye ulaşana kadar kaldırmak istiyorum? karakter. Yardım ettiğin için teşekkür ederim.

    +0

    yalnızca birini garanti edebilir? '' dizinde mi? –

    +0

    Evet. Parapura istediğimi zaten gönderdi, teşekkürler. –

    +0

    @DanielMallott: geçerli bir URL ise, * * sadece bir '' '' '... – Fischermaen

    cevap

    18
    string s = @"www.site.com/link/index.php?REMOVETHISHERE"; 
    s = s.Remove(s.LastIndexOf('?')); 
    //Now s will be simply "www.site.com/link/index.php" 
    

    o

    +1

    Teşekkür ederim, tam olarak istediğim şey. Ben tam bir aptalım. 9 dakika içinde kabul edeceğim. –

    +0

    nitpicking, ancak 'IndexOf' muhtemelen 'LastIndexOf' için tercih edilebilir – minnow

    +0

    @minnow neden ??? Eğer dize birden fazla ''' OP muhtemelen son bir –

    2

    kullanın string.split yapmalıdır.

    string URL = "www.site.com/link/index.php?REMOVETHISHERE" 
    var parts = URL.Split('?'); 
    

    Sonra parts[0] "www.site.com/link/index.php" içerecektir ve parts[1] "REMOVETHISHERE" içerecektir. Daha sonra istediğiniz parçası kullanabilirsiniz.

    Dizinin ikinci öğesine erişmeye çalışmadan önce iki bölüm olduğundan emin olmak için çek eklemeniz gerekir. Örneğin, dizenin "?" Içerip içermediğini kontrol edebilirsiniz. Split'u aramaya çalışmadan önce.

    3

    Düzgün hazırlanmış bir dize işlemi işe yaramasına rağmen, kısmi URI bilgilerinin çıkarılmasına yönelik genel bir yol, bu işlemleri kapsülleyen yöntemlere sahip olan System.Uri türünü kullanmaktır, örn.

    var uri = new Uri("http://www.site.com/link/index.php?REMOVETHISHERE"); 
    var part = uri.GetLeftPart(UriPartial.Path); 
    

    Bu

    daha net kod niyet iletecek ve yeniden kullanarak olacak çalıştığı bilinen bir mevcut uygulamasını.

    System.Uri yapıcısı, dize geçerli bir URI'yi temsil etmiyorsa bir istisna atar, ancak geçersiz bir URI ile karşılaşılmışsa muhtemelen programınızda başka bir davranışı çağırmak isteyebilirsiniz. Geçersiz bir URI'yi tespit etmek için istisnayı yakalayabilir veya TryCreate() aşırı yüklerinden birini kullanabilirsiniz.

    0

    Son "?" Öğesini kaldırmak için ve her şey sonra:

    string input = @"www.site.com/link/index.php?REMOVETHISHERE"; 
        input = input.Remove(input.LastIndexOf('?')); 
    
        OR 
    
        string input = @"www.site.com/link/index.php?REMOVETHISHERE"; 
        input = input.Substring(0, input.LastIndexOf('?')); 
    

    Şimdi çıkış olacaktır:

    www.site.com/link/index.php 
    
    İlgili konular