SORU
31 Ocak 2009, CUMARTESİ


String.() İçeren bir Dize daha hızlı.() Adres bilgisi?

Yaklaşık 2000 karakter string bir tampon var ve eğer belirli bir dize içeriyorsa, tampon kontrol edin.

Herkes String.Contains method String.IndexOf method daha iyi yapar biliyor mu?

    // 2000 characters in s1, search token in s2
    string s1 = "Many characters. The quick brown fox jumps over the lazy dog"; 
    string s2 = "fox";
    bool b;
    b = s1.Contains(s2);
    int i;
    i = s1.IndexOf(s2);

Fun fact

CEVAP
31 Ocak 2009, CUMARTESİ


Contains aramalar IndexOf:

public bool Contains(string value)
{
    return (this.IndexOf(value, StringComparison.Ordinal) >= 0);
}

Sonuçta bir CLR uygulaması kullanan CompareInfo.IndexOf, çağıran.

Eğer dizeleri CLR göre nasıl 14 ** (bak . görmek isterseniz ^em>CaseİnsensitiveCompHelper).

IndexOf(string) bir seçenek yok ve Contains()bir Sıra compare (bir byte-by-byte gerçekleştirmek için çabalamak yerine, karşılaştırma akıllı, örneğin, e é ile karşılaştırın) kullanır.

IndexOf IndexOf düz bir dize arama Kernel32.dll (reflektör güç!) FindNLSString kullanarak gider gibi biraz daha hızlı (teoride).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • curioustravelers

    curioustrave

    12 AĞUSTOS 2006
  • Friday NightFort

    Friday Night

    15 EYLÜL 2011
  • segtlim

    segtlim

    21 EKİM 2008