Harf b├╝y├╝kl├╝─č├╝ne duyars─▒z 'Contains (string)'


Al─▒nan cevaba git


A┼ča─č─▒daki d├Ân├╝┼č├╝ ger├žekle┼čtirmenin bir yolu var m─▒?

 string title = "ASTRINGTOTEST";
title.Contains("string");
 

B├╝y├╝k k├╝├ž├╝k harf duyarl─▒l─▒─č─▒ ayarlamama izin veren bir a┼č─▒r─▒ y├╝k var gibi g├Âr├╝nm├╝yor. ┼×u anda ikisini de YUKARIYORUM, ama bu aptalca (ki bunlardan yukar─▒-a┼ča─č─▒ kasa ile gelen i18n konular─▒na de─činiyorum ).

G├ťNCELLEME
Bu soru ├žok eski ve o zamandan beri, tamamen ara┼čt─▒rmak istemeniz durumunda, ger├žekten geni┼č ve zor bir konu i├žin basit bir cevap istedi─čimi farkettim.
├ço─ču durumda, tek dilli, ─░ngilizce kod bazlar─▒nda bu cevap yeterli olacakt─▒r. ┼×├╝pheliyim ├ž├╝nk├╝ buraya gelen ├žo─ču insan bu kategoriye giriyor, bu en pop├╝ler cevap. Ancak
bu cevap, her iki metnin de ayn─▒ k├╝lt├╝r oldu─čunu ve bu k├╝lt├╝r├╝n ne oldu─čunu bilene kadar duyars─▒z olan metin durumlar─▒n─▒ kar┼č─▒la┼čt─▒ramayaca─č─▒m─▒z i├žsel problemi ortaya ├ž─▒karmaktad─▒r. Bu belki daha az pop├╝ler bir cevap, ancak daha do─čru oldu─čunu d├╝┼č├╝n├╝yorum ve bu y├╝zden b├Âyle i┼čaretledim.


2760









Cevap say─▒s─▒n─▒ say: 24






Dizenin dize paragraph i├žerip i├žermedi─čini test etmek i├žin word (thanks @QuarterMeister)

 culture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0
 

Metnin yaz─▒ld─▒─č─▒ dili a├ž─▒klayan culture ├Ârnek nerede CultureInfo .

Bu ├ž├Âz├╝m, dile ba─čl─▒ olan, b├╝y├╝k / k├╝├ž├╝k harfe duyars─▒zl─▒─č─▒n tan─▒m─▒ konusunda ┼čeffaf . ├ľrne─čin, ─░ngilizce dil karakterleri I ve i dokuzuncu mektubun b├╝y├╝k ve k├╝├ž├╝k harf versiyonlar─▒n─▒ kullan─▒rken, T├╝rk├že dil bu karakterleri 29 harf uzunlu─čundaki alfabenin onbirinci ve on ikinci harfleri i├žin kullan─▒r . '─░' nin T├╝rk├že b├╝y├╝k harfleri yabanc─▒ karakter olan '─░' dir.

B├Âylece dizeleri tin ve ─░ngilizce TIN ayn─▒ kelime , ama T├╝rk├že olarak farkl─▒ kelimeler . Anlad─▒─č─▒m kadar─▒yla biri "ruh" di─čeri onomatopoeia kelimesi. (T├╝rkler, l├╝tfen yanl─▒┼čsam d├╝zeltin veya daha iyi bir ├Ârnek ├Ânerin)

├ľzetlemek gerekirse, metnin hangi dilde oldu─čunu biliyorsan─▒z, 'bu iki dize ayn─▒, ancak farkl─▒ durumlarda' sorusunu cevaplayabilirsiniz . E─čer bilmiyorsan─▒z, bir kumar oynamak zorunda kalacaks─▒n─▒z. ─░ngilizcenin yaz─▒l─▒mdaki hegemonyas─▒ g├Âz ├Ân├╝ne al─▒nd─▒─č─▒nda, muhtemelen ba┼čvurman─▒z gerekir CultureInfo.InvariantCulture , ├ž├╝nk├╝ bu tan─▒d─▒k ┼čekillerde yanl─▒┼č olacakt─▒r.


1297







String.IndexOf Metodunu kullanabilir ve kullan─▒lacak StringComparison.OrdinalIgnoreCase arama t├╝r├╝ olarak ge├žebilirsiniz :

 string title = "STRING";
bool contains = title.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
 

Daha da iyisi, string i├žin yeni bir uzatma y├Ântemi tan─▒mlamakt─▒r:

 public static class StringExtensions
{
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source?.IndexOf(toCheck, comp) >= 0;
    }
}
 

Unutmay─▒n, daha eski s├╝r├╝mler i├žin C # 6.0'dan (VS 2015) beri bo┼č yay─▒l─▒m─▒n ?. mevcut oldu─čunu unutmay─▒n.

 if (source == null) return false;
return source.IndexOf(toCheck, comp) >= 0;
 

KULLANIM:

 string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
 

2604







Bu ┼čekilde kullanabilirsiniz IndexOf() :

 string title = "STRING";

if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1)
{
    // The string exists in the original
}
 

0 (s─▒f─▒r) bir dizin olabilece─činden, -1'e g├Âre denetlersiniz.

MSDN

Bu dize bulunursa de─čerin s─▒f─▒r temelli dizin konumu veya de─čilse, -1. De─čer String.Empty ise, d├Ân├╝┼č de─čeri 0'd─▒r.


219







Regex kullanarak alternatif ├ž├Âz├╝m:

 bool contains = Regex.IsMatch("StRiNG to search", Regex.Escape("string"), RegexOptions.IgnoreCase);
 

137


2010-07-28





─░lk ├Ânce dizeleri her zaman yukar─▒ veya a┼ča─č─▒ koyabilirsiniz.

 string title = "string":
title.ToUpper().Contains("STRING")  // returns true
 

Oops, az ├Ânce o son par├žay─▒ g├Ârd├╝m. Bir durumda duyars─▒z kar┼č─▒la┼čt─▒rma * muhtemelen * yine de ayn─▒ ┼čeyi yapard─▒ ve performans bir sorun de─čilse, b├╝y├╝k harf olu┼čturma ve bunlar─▒ kar┼č─▒la┼čt─▒rmada bir sorun g├Ârm├╝yorum. Bir zamanlar b├╝y├╝k-k├╝├ž├╝k harfe duyars─▒z bir kar┼č─▒la┼čt─▒rma yapt─▒─č─▒m─▒ yemin edebilirdim ...


78







Cevapla ilgili bir sorun, bir dize bo┼čsa bir istisna ataca─č─▒d─▒r. Bunu bir ├žek olarak ekleyebilirsiniz, b├Âylece yapmaz:

 public static bool Contains(this string source, string toCheck, StringComparison comp)
{
    if (string.IsNullOrEmpty(toCheck) || string.IsNullOrEmpty(source))
        return true;

    return source.IndexOf(toCheck, comp) >= 0;
} 
 

51







Bu temiz ve basittir.

 Regex.IsMatch(file, fileNamestr, RegexOptions.IgnoreCase)
 

37







StringExtension s─▒n─▒f─▒ ileri bir yoldur, tam bir kod ├Ârne─či vermek i├žin yukar─▒daki birka├ž yaz─▒y─▒ birle┼čtirdim:

 public static class StringExtensions
{
    /// <summary>
    /// Allows case insensitive checks
    /// </summary>
    public static bool Contains(this string source, string toCheck, StringComparison comp)
    {
        return source.IndexOf(toCheck, comp) >= 0;
    }
}
 

35







Yaln─▒zca .NET Core 2.0+ (┼ču andan itibaren)

.NET Core 2.0 s├╝r├╝m├╝nden beri bununla ba┼ča ├ž─▒kabilmek i├žin bir ├žift y├Ânteme sahiptir:

  • String.Contains (Char, StringComparison )
  • String.Contains (String, StringComparison )

├ľrnek:

 "Test".Contains("test", System.StringComparison.CurrentCultureIgnoreCase);
 

Zamanla, muhtemelen .NET Standard'a ve oradan da Base Class Library'nin di─čer t├╝m uygulamalar─▒na gireceklerdir.


32







OrdinalIgnoreCase, CurrentCultureIgnoreCase veya InvariantCultureIgnoreCase?

Bu eksik oldu─čundan, hangisinin ne zaman kullan─▒laca─č─▒na ili┼čkin baz─▒ ├Âneriler:

Dos

  • StringComparison.OrdinalIgnoreCase Kar┼č─▒la┼čt─▒rmalar i├žin k├╝lt├╝r-agnostik dize e┼čle┼čmesinde g├╝venli varsay─▒lan─▒n─▒z olarak kullan─▒n .
  • StringComparison.OrdinalIgnoreCase Daha y├╝ksek h─▒z i├žin kar┼č─▒la┼čt─▒rmalar kullan─▒n .
  • StringComparison.CurrentCulture-based ├ç─▒kt─▒y─▒ kullan─▒c─▒ya g├Âr├╝nt├╝lerken dize i┼člemlerini kullan─▒n .
  • Dilbilimsel olmayan StringComparison.Ordinal veya StringComparison.OrdinalIgnoreCase kar┼č─▒la┼čt─▒rma
    dilsel olarak ilgisiz oldu─čunda (├Ârne─čin, sembolik) kullanmak i├žin de─či┼čmeyen k├╝lt├╝re dayal─▒ olarak ge├žerli dize i┼člemlerini kullan─▒n .
  • Kar┼č─▒la┼čt─▒rma i├žin dizeleri normalle┼čtirmek ToUpperInvariant yerine, kullan─▒n ToLowerInvariant .

Yap─▒lmamas─▒ Gerekenler

  • Dize kar┼č─▒la┼čt─▒rma mekanizmas─▒n─▒ a├ž─▒k├ža veya dolayl─▒ olarak belirtmeyen dizgi i┼člemleri i├žin a┼č─▒r─▒ y├╝klemeler kullan─▒n.
  • ├ço─ču durumda, StringComparison.InvariantCulture tabanl─▒ dize
    i┼člemleri kullan─▒n ; Birka├ž istisnadan biri,
    dilsel olarak anlaml─▒ fakat k├╝lt├╝rel a├ž─▒dan agnostik verilere dayanmakta .

Bu kurallara dayanarak kullanman─▒z gerekir:

 string title = "STRING";
if (title.IndexOf("string", 0, StringComparison.[YourDecision]) != -1)
{
    // The string exists in the original
}
 

oysaki [Karar─▒n─▒z] yukar─▒daki tavsiyelere dayanmaktad─▒r.

kaynak ba─člant─▒: http://msdn.microsoft.com/en-us/library/ms973919.aspx


27







Bunlar en kolay ├ž├Âz├╝mlerdir.

  1. Dizine G├Âre

     string title = "STRING";
    
    if (title.IndexOf("string", 0, StringComparison.CurrentCultureIgnoreCase) != -1)
    {
        // contains 
    }
     
  2. Davay─▒ de─či┼čtirerek

     string title = "STRING";
    
    bool contains = title.ToLower().Contains("string")
     
  3. Regex Taraf─▒ndan

     Regex.IsMatch(title, "string", RegexOptions.IgnoreCase);
     

13







Bunun C # olmad─▒─č─▒n─▒ biliyorum, ancak ├žer├ževede (VB.NET) zaten b├Âyle bir fonksiyon var.

 Dim str As String = "UPPERlower"
Dim b As Boolean = InStr(str, "UpperLower")
 

C # de─či┼čkeni:

 string myString = "Hello World";
bool contains = Microsoft.VisualBasic.Strings.InStr(myString, "world");
 

11







InStr E─čer uluslararas─▒ ilgili kayg─▒ duyan (veya bunu reimplement olabilir) e─čer VisualBasic gelen y├Ântem d├╝zene─či en iyisidir. DotNeetPeek, sadece b├╝y├╝k harfleri ve k├╝├ž├╝k harfleri de─čil, ayn─▒ zamanda kana t├╝r├╝ ve tam ve yar─▒m geni┼člikli karakterleri (├Âzellikle Asya dilleri i├žin de ge├žerli olmas─▒na ra─čmen, Roma alfabesinin tam s├╝r├╝mleri olmas─▒na ra─čmen) g├Âsterdi─čini g├Âsteriyor ). Baz─▒ ayr─▒nt─▒lar─▒ atl─▒yorum, ancak ├Âzel y├Ântemi g├Âzden ge├žirin InternalInStrText :

 private static int InternalInStrText(int lStartPos, string sSrc, string sFind)
{
  int num = sSrc == null ? 0 : sSrc.Length;
  if (lStartPos > num || num == 0)
    return -1;
  if (sFind == null || sFind.Length == 0)
    return lStartPos;
  else
    return Utils.GetCultureInfo().CompareInfo.IndexOf(sSrc, sFind, lStartPos, CompareOptions.IgnoreCase | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth);
}
 

11







Aynen b├Âyle:

 string s="AbcdEf";
if(s.ToLower().Contains("def"))
{
    Console.WriteLine("yes");
}
 

11







Bunu kullan:

 string.Compare("string", "STRING", new System.Globalization.CultureInfo("en-US"), System.Globalization.CompareOptions.IgnoreCase);
 

10







RegEx kullanmak, bunu yapman─▒n d├╝z bir yoludur:

 Regex.IsMatch(title, "string", RegexOptions.IgnoreCase);
 

7







Bu, buradaki di─čer ├Ârne─če olduk├ža benzer, ancak normalde di─čer alternatiflere gerek olmad─▒─č─▒ndan, enum'u bool i├žin basitle┼čtirmeye karar verdim. ─░┼čte benim ├Ârnek:

 public static class StringExtensions
{
    public static bool Contains(this string source, string toCheck, bool bCaseInsensitive )
    {
        return source.IndexOf(toCheck, bCaseInsensitive ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal) >= 0;
    }
}
 

Ve kullan─▒m ┼č├Âyle bir ┼čeydir:

 if( "main String substring".Contains("SUBSTRING", true) )
....
 

5







Sadece buradaki cevab─▒ olu┼čturmak i├žin, bunu biraz daha kullan─▒c─▒ dostu yapmak i├žin bir dize uzatma y├Ântemi olu┼čturabilirsiniz:

     public static bool ContainsIgnoreCase(this string paragraph, string word)
    {
        return CultureInfo.CurrentCulture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase) >= 0;
    }
 

3







 if ("strcmpstring1".IndexOf(Convert.ToString("strcmpstring2"), StringComparison.CurrentCultureIgnoreCase) >= 0){return true;}else{return false;}
 

2







string.indexof () ─░┼člevini kullanabilirsiniz . Bu b├╝y├╝k / k├╝├ž├╝k harf duyars─▒z olacak


2







Buradaki p├╝f noktas─▒ ipi aramak, durumu yok sayarak, ama tamamen ayn─▒ tutmakt─▒r (ayn─▒ durumda).

  var s="Factory Reset";
 var txt="reset";
 int first = s.IndexOf(txt, StringComparison.InvariantCultureIgnoreCase) + txt.Length;
 var subString = s.Substring(first - txt.Length, txt.Length);
 

Çıktı "Sıfırla"


2


2016-05-03





ge├žirilen dizenin dizgede olup olmad─▒─č─▒n─▒ kontrol etmek istiyorsan─▒z, bunun i├žin basit bir y├Ântem vard─▒r.

 string yourStringForCheck= "abc";
string stringInWhichWeCheck= "Test abc abc";

bool isContained = stringInWhichWeCheck.ToLower().IndexOf(yourStringForCheck.ToLower()) > -1;
 

Bu boolean de─čer, dizgi i├žeriyorsa veya yoksa


2







 public static class StringExtension
{
    #region Public Methods

    public static bool ExContains(this string fullText, string value)
    {
        return ExIndexOf(fullText, value) > -1;
    }

    public static bool ExEquals(this string text, string textToCompare)
    {
        return text.Equals(textToCompare, StringComparison.OrdinalIgnoreCase);
    }

    public static bool ExHasAllEquals(this string text, params string[] textArgs)
    {
        for (int index = 0; index < textArgs.Length; index++)
            if (ExEquals(text, textArgs[index]) == false) return false;
        return true;
    }

    public static bool ExHasEquals(this string text, params string[] textArgs)
    {
        for (int index = 0; index < textArgs.Length; index++)
            if (ExEquals(text, textArgs[index])) return true;
        return false;
    }

    public static bool ExHasNoEquals(this string text, params string[] textArgs)
    {
        return ExHasEquals(text, textArgs) == false;
    }

    public static bool ExHasNotAllEquals(this string text, params string[] textArgs)
    {
        for (int index = 0; index < textArgs.Length; index++)
            if (ExEquals(text, textArgs[index])) return false;
        return true;
    }

    /// <summary>
    /// Reports the zero-based index of the first occurrence of the specified string
    /// in the current System.String object using StringComparison.InvariantCultureIgnoreCase.
    /// A parameter specifies the type of search to use for the specified string.
    /// </summary>
    /// <param name="fullText">
    /// The string to search inside.
    /// </param>
    /// <param name="value">
    /// The string to seek.
    /// </param>
    /// <returns>
    /// The index position of the value parameter if that string is found, or -1 if it
    /// is not. If value is System.String.Empty, the return value is 0.
    /// </returns>
    /// <exception cref="ArgumentNullException">
    /// fullText or value is null.
    /// </exception>
    public static int ExIndexOf(this string fullText, string value)
    {
        return fullText.IndexOf(value, StringComparison.OrdinalIgnoreCase);
    }

    public static bool ExNotEquals(this string text, string textToCompare)
    {
        return ExEquals(text, textToCompare) == false;
    }

    #endregion Public Methods
}
 

0







Acemi i├žin basit bir yol:

 title.ToLower().Contains("string");//of course "string" is lowercase.
 

-3



─░lgili yay─▒nlar


K├╝├ž├╝k harf duyars─▒z dize kar┼č─▒la┼čt─▒rmas─▒ nas─▒l yap─▒l─▒r?

B├╝y├╝k / k├╝├ž├╝k harf duyarl─▒ bir dize kar┼č─▒la┼čt─▒rmas─▒n─▒ nas─▒l yapar─▒m?

K├╝├ž├╝k harf duyars─▒z i├žeriyor

C++ 'da b├╝y├╝k / k├╝├ž├╝k harf duyarl─▒ dize kar┼č─▒la┼čt─▒rmas─▒

Bir String'in Java'da b├╝y├╝k / k├╝├ž├╝k harf duyars─▒z bir ┼čekilde ba┼čka bir Dize i├žerip i├žermedi─či nas─▒l kontrol edilir?

String'e bir alternatif var m─▒? Harf b├╝y├╝kl├╝─č├╝ne duyars─▒z m─▒?

Sqlite3'├╝n string kar┼č─▒la┼čt─▒rmas─▒nda b├╝y├╝k / k├╝├ž├╝k harfe duyars─▒z olmas─▒ nas─▒l ayarlan─▒r?

LINQ B├╝y├╝k / K├╝├ž├╝k Harf Duyars─▒z

Bir dizi ├╝zerinde Array.Contains b├╝y├╝k / k├╝├ž├╝k harf duyarl─▒ hale nas─▒l yapabilirim?

JQuery: Bir duyars─▒z var m─▒: se├žici i├žerir?

Etiketle ilgili di─čer sorular [c#]


Node.js uygulamalar─▒nda nas─▒l hata ay─▒klayabilirim?

Android hatas─▒: * .apk cihaz─▒na y├╝klenemedi *: timeout

PNG ve GIF ile JPEG ve SVG aras─▒ndaki farkl─▒ kullan─▒m alanlar─▒ nelerdir?

Java.time.LocalDateTime ve java.util.Date aras─▒nda d├Ân├╝┼čt├╝rme

UPDATE sorgusunda 3 tablo JOIN nas─▒l yap─▒l─▒r?

Rails Routing Helper (├Ârn. Mymodel_path (model)) Modellerde Kullan─▒labilir mi?

JQuery'de giri┼č de─či┼čikli─či tespit ediliyor mu?

Char t├╝m olu┼čumlar─▒n─▒ dizeden kald─▒r

PHP'de file_get_contents () i┼člevinin uyar─▒s─▒n─▒ nas─▒l kullanabilirim?

Office VBA D├╝zenleyicisi'nde kod yorum ve uncomment nas─▒l