C'deki karakterlerin karşılaştırılması. Bir dizeden belirli sayıda karakteri kaldırma

Dizelerle çalışma. Dize sınıfı. Sınıf yapıcıları. atama(), ekleme(), ekleme(), değiştirme(), silme(), bulma(), rfind(), karşılaştırma(), c_str() işlevleri. Örnekler

1. C++ programlarındaki string sınıfının amacı nedir?

String sınıfı, boş karakterle sonlandırılmış dizeler olan char* dizeleriyle çalışacak şekilde tasarlanmıştır. String sınıfı şu şekilde tanıtıldı: alternatif seçenek char* türündeki dizelerle çalışmak için. Bir karakterle biten satırlar ‘\0’ C-stringleri olarak da adlandırılır. String bir sınıf olduğundan bu sınıfın nesnelerini bildirebilirsiniz.

2. MS Visual Studio C++'da string sınıfının yeteneklerini kullanmak için hangi modüllerin (kütüphanelerin) bağlanması gerekir?

MS Visual Studio'da (C++) dize sınıfının yeteneklerini kullanmak için kitaplığı eklemeniz gerekir. ve std ad alanı.

#katmak ad alanı std'sini kullanma;
3. String tipindeki bir değişken nasıl bildirilir? Örnekler

String türünde bir değişkenin bildirilmesi normal değişkenle aynı şekilde yapılır. Olası seçenek eşzamanlı başlatma ile bildirimler.

// string yazın string s1; // string türünde s1 adlı değişken string s2 = "Bu bir dize değişkenidir"; // başlatma ile bildirim // atama operatörüyle string tipinde bir değişken kullanma s1 = s2; // s1 = "Bu bir dize değişkenidir" s2 = "Yeni metin" ;
4. String sınıfını kullanmanın char* türüne göre avantajları ve dezavantajları nelerdir?

Yeni string tipinin yaratılması, char* tipinin sergilediği karakter stringleri ile çalışmanın eksikliklerinden kaynaklanmıştır. Char* türüyle karşılaştırıldığında dize türü aşağıdaki ana avantajlara sahiptir:

  • standart C++ operatörlerini kullanarak dizeleri işleme yeteneği ( = , + , = = , <> vesaire.). Bildiğiniz gibi char* tipini kullanırken, dizelerle yapılan en basit işlemler bile karmaşık görünüyordu ve aşırı program kodu yazmayı gerektiriyordu;
  • program kodunun daha iyi güvenilirliğinin (güvenliğinin) sağlanması. Örneğin, dizeleri kopyalarken dize türü, kaynak dizenin hedef dizeden büyük olması durumunda oluşabilecek uygun eylemleri sağlar;
  • bağımsız bir veri türü olarak bir dize sağlamak. String tipinin string olarak bildirimi programdaki tüm değişkenler için aynıdır, bu da veri tutarlılığını sağlar.

String tipinin char* tipine göre en büyük dezavantajı veri işleme hızının daha yavaş olmasıdır. Bunun nedeni string tipinin aslında bir konteyner sınıfı olmasıdır. Ve bir sınıfla çalışmak, program kodunun ek olarak uygulanmasını gerektirir ve bu da fazladan zaman alır.

5. String sınıfının nesneleri ile hangi operatörler kullanılabilir?

String sınıfı kullanışlıdır çünkü standart (aşırı yüklenmiş) operatörleri kullanarak dizeleri rahatça yönetmenize olanak tanır.

Aşağıdaki operatörler string sınıfının nesneleri ile kullanılabilir:

  • = - atama
  • + – birleştirme (dizeleri birleştirme)
  • += – birleştirme ile atama
  • == – eşitlik
  • != – eşitsizlik
  • < - az
  • <= - küçük veya eşit
  • > - Daha
  • >= - büyük veya eşittir
  • – indeksleme

Örnek, yukarıdaki ifadelerin kullanımını gösteren

// string türü, stringler üzerindeki işlemler dize s1 = "s-1"; dize s2 = "s-2"; dize s3; bool b; // işlem "= (dize ataması) s3 = s1; // s3 = "s-1" // "+" işlemi - dize birleştirme s3 = s3 + s2; // s3 = "s-1s-2" // işlem "+=" - birleştirmeli atama s3 = "s-3" ; s3 += "abc"; // s3 = "s-3abc" // işlem "==" - dize karşılaştırması b = s2==s1; // b = yanlış b = s2=="s-2" ; // b = doğru // işlem "!=" - dize karşılaştırması (eşit değil) s1 = "s1"; s2 = "s2"; b = s1 != s2; // b = doğru // işlemler "<" и ">" - dize karşılaştırması s1 = "abcd"; s2 = "de"; b = s1 > s2; // b = yanlış b = s1< s2; // b = true // işlemler "<=" и ">=" - dize karşılaştırması (küçük veya eşit, büyük veya eşit) s1 = "abcd"; s2 = "ab"; b = s1 >= s2; // b = doğru b = s1<= s2; // b = false b = s2 >= "ab"; // b = doğru // işlem - indeksleme karakter c; s1 = "abcd"; c = s1; // c = "c" c = s1; // c = "bir"
6. String sınıfı yapıcılar içeriyor mu?

Herhangi bir sınıf gibi, string sınıfının da bir takım yapıcıları vardır. Başlıcaları şunlardır:

Sicim(); string(const char * str); string(const string & str);

7. Kurucular kullanılarak başlatma örnekleri

Aşağıda dize türü değişkenleri başlatma örnekleri verilmiştir

String s1("Merhaba!"); string s2 = "Merhaba!" ;// başlatma - yapıcı dize(const char * str) char * ps = "Merhaba"; dize s3(ps); // başlatma dizisi s4(s3);// başlatma - yapıcı dize(const dizesi & str) dize s5;

// başlatma - string() yapıcısı

Bir dizeyi diğerine atamak için iki yöntemden birini kullanabilirsiniz:

  • atama operatörünü kullan ‘=’ ;
  • string sınıfından quest() fonksiyonunu kullanın.

quest() fonksiyonunun aşırı yüklenmiş birçok uygulaması vardır.

İlk seçenek parametresiz bir işlevi çağırmaktır

String &atama(void);

Bu durumda, bir dizenin diğerine basit bir ataması vardır.

İkinci seçenek, bir dizeden belirli sayıda karakteri kopyalamanıza olanak tanır:

String &atama(const string & s, size_type st, size_type sayi);

  • s – kaynak dizenin alındığı nesne;
  • st – sayı karakterlerinin kopyalanmasının başladığı satırdaki dizin (konum);
  • num – st konumundan kopyalanacak karakter sayısı;
  • size_type – sıralı veri türü.

quest() fonksiyonunun üçüncü çeşidi, s dizgesinin ilk sayısal karakterlerini çağırana kopyalar:

String & atama(const char * s, size_type sayı);

  • s – karakterle biten bir dize ‘\0’ ;
  • num, çağıran nesneye kopyalanan karakterlerin sayısıdır. s dizesindeki ilk sayı karakterleri kopyalanır.

Aşağıda quest() fonksiyonunun farklı uygulamalarına ilişkin bir örnek verilmiştir.

Örnek.

// dizelerin atanması, quest() fonksiyonu string s1 = "site"; dize s2; dize s3; char * ps = "site"; s3 = s1; // s3 = "site" s2.atama(s1); // s2 = "site" s2.atama(s1, 0, 4); // s2 = "en iyi" s2.sign(ps, 8); // s2 = "en iyi program"
9. Dizeleri birleştirmek. Append() işlevi. Örnek

Stringleri birleştirmek için Append() fonksiyonu kullanılır. İşlemi satır eklemek için de kullanabilirsiniz ‘+’ , Örneğin:

Dize s1; dize s2; s1 = "abc"; s2 = "def"; s1 = s1 + s2; // s1 = "abcdef"

Bununla birlikte, bir dizenin bir kısmını eklemeniz gerekiyorsa, Append() işlevi kullanışlıdır.

İşlev aşağıdaki uygulama seçeneklerine sahiptir:

String &append(const string & s, size_type start); string &append(const char * s, size_type sayı);

İlk uygulamada, işlev bir dize nesnesine bir başvuru alır. Sçağıran nesneye eklenir. İkinci uygulamada işlev, '\0' karakteriyle biten const char * türünde bir dizeye yönelik bir işaretçi alır.

Örnek. Append() fonksiyonunun gösterimi.

String s1 = "abcdef"; s2 = "1234567890"; ek(ler2, 3, 4); // s1 = "abcdef4567" karakter * ps = "1234567890" ; s1 = "abcdef"; s1.append(ps, 3); // s1 = "abcdef123"

10. Bir dizeye karakter ekleme. insert() işlevi. Örnek

Bir satırı başka bir satırın belirli bir konumuna eklemek için, çeşitli uygulama seçeneklerine sahip olan insert() işlevini kullanmanız gerekir.

İşlevin ilk sürümü, s dizesinin tamamını çağıran satırın (çağıran nesne) belirtilen başlangıç ​​konumuna eklemenizi sağlar:

String & insert(size_type start, const string &s);

İşlevin ikinci sürümü, çağıran dizenin belirtilen başlangıç ​​konumuna s dizesinin bir kısmını (parametreler insStart, num) eklemenizi sağlar:

String & insert(size_type start, const string &s, size_type insStart, size_type num);

Yukarıdaki işlevlerde:

  • s – arayan satıra eklenen bir dize;
  • başlangıç ​​– çağıran satırdaki s dizesinin eklendiği konum;
  • insStart – ekleme işleminin gerçekleştiği dizedeki konum;
  • num – insStart konumundan eklenen s dizesindeki karakter sayısı.
string s1 = "abcdef"; dize s2 = "1234567890" ; s1.insert(3, s2); // s1 = "abc"+"1234567890"+"def"="abc1234567890def" s2.insert(2, s1, 1, 3); // s2 = "12bcd34567890"
11. Bir dizedeki karakterleri değiştirme. değiştir() işlevi. Örnek

change() işlevi çağıran dizedeki karakterleri değiştirir. İşlev aşağıdaki uygulama seçeneklerine sahiptir:

String &replace(size_type başlangıç, size_type sayı, const string &s); string &replace(size_type start, size_type num, const string &s, size_type replStart, size_type replNum);

İlk uygulamada, çağıran dizge s dizgesi ile değiştirilir. Çağrı satırında s dizesiyle değiştirilmesi gereken konumu (başlangıç) ve karakter sayısını (num) belirtmek mümkündür.

change() işlevinin ikinci sürümü, s dizesinin yalnızca bir kısmının çağıran dizeyle değiştirilmesine izin vermesi bakımından ilkinden farklıdır. Bu durumda, iki ek parametre verilir: replStart'ın konumu ve s dizesindeki, çağıran dizenin yerini alan bir alt dize oluşturan karakter sayısı.

Örnek. Değiştir() işlevinin gösterimi.

String s1 = "abcdef"; dize s2 = "1234567890" ; s2.replace(2, 4, s1); // s2 = "12abcdef7890" s2 = "1234567890" ; s2.replace(3, 2, s1); // s2 = "123abcdef67890" s2 = "1234567890" ; s2.replace(5, 1, s1); // s2 = "12345abcdef7890" // karakterleri değiştiriyoruz, değiştir() fonksiyonu string s1 = "abcdef"; dize s2 = "1234567890" ; s2.replace(2, 4, s1); // s2 = "12abcdef7890" s2 = "1234567890" ; s2.replace(3, 2, s1); // s2 = "123abcdef67890" s2 = "1234567890" ; s2.replace(5, 1, s1); // s2 = "12345abcdef7890" s2 = "1234567890" ; s2.replace(5, 1, s1, 2, 3); // s2 = "12345cde7890" s2 = "1234567890" ; s2.replace(4, 2, s1, 0, 4); // s2 = "1234abcd7890"

12. Bir dizeden belirli sayıda karakteri kaldırmak. silme () işlevi. Örnek

Çağıran dizedeki karakterleri kaldırmak için, delete() işlevini kullanın:

String & delete(size_type index=0, size_type num = npos);

  • indeks – çağıran satırdaki karakterleri kaldırmak istediğiniz yerden başlayan indeks (konum);
  • num – kaldırılan karakter sayısı.

Örnek.

String s = "01234567890" ; s.erase(3, 5); // s = "012890" s = "01234567890" ; s.erase(); // s = ""

13. Bir dizede bir karakter arayın. Find() ve rfind() işlevleri. Örnekler

Dize sınıfında, bir alt dizede bir dize aramak, arama yönüne göre farklılık gösteren iki yolla yapılabilir:

  • find() işlevini kullanarak dizeyi baştan sona tarayarak;
  • rfind() işleviyle dizeyi baştan sona tarayarak.

find() işlevinin prototipi şuna benzer:

Size_type find(const string &s, size_type start = 0) const;

  • s, bu işlevi çağıran dizede aranan alt dizedir. İşlev, s dizesinin ilk oluşumunu arar. Eğer s alt dizgesi bu işlevi çağıran dizgede bulunursa, ilk geçtiği yerin konumu döndürülür. Aksi takdirde -1 döndürülür;

rfind() işlevinin prototipi şuna benzer:

Size_type rfind(const string &s, size_type start = npos) const ;

  • s, çağıran dizede aranan alt dizedir. Bir dizede bir alt dizenin aranması, baştan sona gerçekleştirilir. Eğer s alt dizgesi çağıran dizgede bulunursa, işlev ilk geçtiği yerin konumunu döndürür. Aksi takdirde işlev -1 değerini döndürür;
  • npos – arayan hattın son karakterinin konumu;
  • başlangıç ​​– aramanın gerçekleştirildiği konum.

Örnek 1. Find() işlevinin sonucunu gösteren bir kod parçası

// string yazın, fonksiyon find() dize s1 = "01234567890" ; dize s2 = "345"; string s3 = "abcd"; int konum; konum = s1.find(s2); // konum = 3 konum = s1.find(s2, 1); // konum = 3 konum = s1.find("jklmn", 0); // konum = -1 konum = s1.find(s3); // konum = -1 konum = s2.find(s1); // konum = -1

Örnek 2. rfind() fonksiyonunun gösterimi.

// string türü, find() ve rfind() fonksiyonları dize s1 = "01234567890" ; dize s2 = "345"; string s3 = "abcd"; string s4 = "abcd---abcd" ; int konum; konum = s1.rfind(s2); // konum = 3 konum = s1.rfind(s2, 12); // konum = 3 konum = s1.rfind(s2, 3); // konum = 3 konum = s1.rfind(s2, 2); // konum = -1 konum = s2.rfind(s1); // konum = -1 konum = s1.rfind(s3, 0); // konum = -1 // find() ve rfind() işlevleri arasındaki fark konum = s4.rfind(s3); // konum = 7 konum = s4.find(s3); // konum = 0
14. Tellerin parçalarının karşılaştırılması. karşılaştırma () işlevi. Örnek

Dize türü bir sınıf olduğundan, iki dizeyi birbiriyle karşılaştırmak için işlemi kullanabilirsiniz. ‘= =’ . İki dize aynıysa karşılaştırmanın sonucu true olacaktır. Aksi takdirde karşılaştırmanın sonucu false olacaktır.

Ancak bir dizenin bir kısmını diğeriyle karşılaştırmanız gerekiyorsa, bunun için Compare() işlevi sağlanır.

Compare() işlevi prototipi:

int karşılaştırma(size_type başlangıç, size_type sayı, const string &s) const;
  • s – çağıran dizeyle karşılaştırılan dize;
  • başlangıç ​​– karşılaştırma için dize karakterlerinin görüntülenmesinin başladığı dizedeki konum (indeks);
  • num, dize s'de çağıran dizeyle karşılaştırılan karakter sayısıdır.

Fonksiyon aşağıdaki gibi çalışır. Çağıran dize s dizesinden küçükse işlev -1 ( negatif değer). Çağıran dize s dizesinden büyükse işlev 1 (pozitif bir değer) döndürür. İki dize eşitse işlev 0 değerini döndürür.

Örnek. Compare() fonksiyonunun gösterimi:

// dize türü, karşılaştırma() işlevi dize s1 = "012345" ; dize s2 = "0123456789" ; int res; res = s1.compare(s2); // res = -1 res = s1.compare("33333" ); // res = -1 res = s1.compare("012345" ); // res = 0 res = s1.compare("345" ); // res = -1 res = s1.compare(0, 5, s2); // res = -1 res = s2.compare(0, 5, s1); // res = -1 res = s1.compare(0, 5, "012345"); // res = -1 res = s2.compare(s1); // res = 1 res = s2.compare("456"); // res = -1 res = s2.compare("000000" ); // res = 1
15. Satır sonu karakteri '\0' (char * ) olan bir dize alma. c_str() işlevi. Örnek

Karakterle biten bir dize elde etmek için ‘\0’ c_str() işlevi kullanılır.

Fonksiyon prototipi:

const char * c_str() const;

Fonksiyon const değiştiricisi ile bildirilir. Bu, işlevin çağıran nesneyi (dize) değiştiremeyeceği anlamına gelir.

Örnek 1. Dize türünü const char *'a dönüştürme.

// dizeyi yazın, işlev c_str() string s = "abcdef"; const karakter * ps; ps = s.c_str(); // ps = "abcdef"

Örnek 2.

Aşağıda, bir dizeyi bir Label denetiminde görüntülemek için dizeden System::String türüne dönüştürmenin bir gösterimi bulunmaktadır.

Son güncelleme: 31.10.2015

birleştirme

Dize birleştirme veya birleştirme, + operatörü veya Concat yöntemi kullanılarak yapılabilir:

String s1 = "merhaba"; string s2 = "dünya"; string s3 = s1 + " " + s2; // sonuç: string "merhaba dünya" string s4 = String.Concat(s3, "!!!"); // sonuç: dize "merhaba dünya!!!" Console.WriteLine(s4);

Concat yöntemi, String sınıfının iki dizeyi parametre olarak alan statik bir yöntemidir. Yöntemin farklı sayıda parametre alan başka versiyonları da vardır.

join yöntemi aynı zamanda dizeleri birleştirmek için de kullanılabilir:

String s5 = "elma"; string s6 = "bir gün"; string s7 = "tutar"; string s8 = "bir doktor"; string s9 = "uzakta"; dize değerleri = yeni dize ( s5, s6, s7, s8, s9 ); String s10 = String.Join(" ", değerler); // sonuç: string "günde bir elma doktoru uzak tutar"

Birleştirme yöntemi de statiktir. Yukarıda kullanılan yöntemin sürümü iki parametre alır: bir ayırıcı dize (bu durumda bir boşluk) ve ayırıcıyla birleştirilecek ve ayrılacak bir dizi dize.

Dize karşılaştırması

Dizeleri karşılaştırmak için statik Karşılaştırma yöntemini kullanın:

String s1 = "merhaba"; string s2 = "dünya"; int sonuç = String.Compare(s1, s2); eğer (sonuç<0) { Console.WriteLine("Строка s1 перед строкой s2"); } else if (result >0) ( Console.WriteLine("s1 satırı s2 satırından sonra gelir"); ) else ( Console.WriteLine("s1 ve s2 satırları aynıdır"); ) // sonuç "s1 satırı s2 satırından önce gelir");

Compare yönteminin bu sürümü iki dize alır ve bir sayı döndürür. İlk dize alfabetik olarak ikinciden büyükse sıfırdan küçük bir sayı döndürülür. Aksi takdirde sıfırdan büyük bir sayı döndürülür. Ve üçüncü durum - eğer dizeler eşitse, o zaman 0 sayısı döndürülür.

Bu durumda h karakteri w karakterinden alfabetik olarak daha yüksek olduğundan ilk satır daha yüksek olacaktır.

Bir dizede ara

IndexOf yöntemini kullanarak, bir dizede tek bir karakterin veya alt dizenin ilk geçtiği yerin dizinini belirleyebiliriz:

String s1 = "merhaba dünya"; karakter ch = "o"; int indexOfChar = s1.IndexOf(ch); // 4'e eşittir Console.WriteLine(indexOfChar); string subString = "iş"; int indexOfSubstring = s1.IndexOf(subString); // 6'ya eşittir Console.WriteLine(indexOfSubstring);

LastIndexOf yöntemi, bir karakterin veya alt dizenin bir dizedeki son oluşumunun dizinini bulmasının dışında benzer şekilde çalışır.

Başka bir yöntem grubu, bir dizenin belirli bir alt dizeyle başlayıp bitmediğini bulmanızı sağlar. StartsWith ve EndsWith yöntemleri bunun için tasarlanmıştır. Örneğin, .exe uzantılı tüm dosyaları bir klasörden silmek gibi bir görevimiz var:

Dize yolu = @"C:\BazıDir"; string dosyaları = Directory.GetFiles(yol); for (int i = 0; i< files.Length; i++) { if(files[i].EndsWith(".exe")) File.Delete(files[i]); }

Dize bölme

Split işlevini kullanarak bir dizeyi bir dizi alt dizeye bölebiliriz. Split işlevi, sınırlayıcı görevi görecek bir dizi karakteri veya dizeyi parametre olarak alır. Örneğin, bir terimdeki sözcük sayısını boşluk karakterlerine bölerek sayalım:

String text = "Ve bunların hepsi bu yüzden oldu"; string kelimeler = text.Split(yeni karakter ( " " )); foreach (sözcüklerdeki dizeler) ( Console.WriteLine(s); )

Bu, boşluklara göre bölmenin en iyi yolu değildir, çünkü giriş dizesinde birkaç ardışık boşluk olabilir ve sonuçta ortaya çıkan dizi de boşluklar içerebilir, bu nedenle yöntemin başka bir versiyonunu kullanmak daha iyidir:

String sözcükleri = text.Split(new char ( " "), StringSplitOptions.RemoveEmptyEntries);

İkinci parametre StringSplitOptions.RemoveEmptyEntries tüm boş alt dizelerin kaldırılması gerektiğini söylüyor.

Çizgiyi kırpma

Baştaki veya sondaki karakterleri kırpmak için Kırp işlevini kullanın:

String metni = "merhaba dünya"; metin = metin.Trim(); // sonuç "merhaba dünya" metin = metin.Trim(yeni karakter ( "d", "h" )); // sonuç "Merhaba Dünya"

Trim işlevi, parametreleri olmadan, baştaki ve sondaki boşlukları kırpar ve kırpılmış dizeyi döndürür. Hangi baştaki ve sondaki karakterlerin kırpılması gerektiğini açıkça belirtmek için bu karakterlerden oluşan bir diziyi işleve iletebiliriz.

Bu işlevin kısmi analogları vardır: TrimStart işlevi başlangıç ​​karakterlerini kırpar ve TrimEnd işlevi bitiş karakterlerini kırpar.

Kırpma belirli kısım Substring işlevi dizelere izin verir:

String text = "İyi günler"; // üçüncü karakterden başlayarak kes text = text.Substring(2); // sonuç "iyi günler" Console.WriteLine(text); // ilkten son iki karaktere kadar kes text = text.Substring(0, text.Length - 2); // sonuç "rosh de" Console.WriteLine(text);

Substring işlevi aynı zamanda kesilmiş dizeyi de döndürür. Kullanılan ilk sürüm, dizenin kesilmesi gereken yerden başlayarak dizini bir parametre olarak kullanır. İkinci versiyonda iki parametre kullanılır: kesme başlangıç ​​indeksi ve ipin kesilen kısmının uzunluğu.

Sokmak

Bir satırı diğerine eklemek için Ekle işlevini kullanın:

String text = "İyi günler"; string subString = "harika"; metin = metin.Insert(8, subString); Console.WriteLine(metin);

Insert işlevindeki ilk parametre, alt dizenin eklenmesi gereken dizindir ve ikinci parametre, alt dizenin kendisidir.

Satırları kaldırma

Remove yöntemi bir dizenin bir kısmının kaldırılmasına yardımcı olur:

String text = "İyi günler"; // son karakterin dizini int ind = text.Length - 1; // son karakteri kes text = text.Remove(ind); Console.WriteLine(metin); // ilk iki karakteri kesip atın text = text.Remove(0, 2);

Remove yönteminin ilk sürümü, dizedeki tüm karakterlerin kaldırılması gereken bir dizin alır. İkinci versiyon bir parametre daha alıyor - kaç karakterin kaldırılması gerektiği.

Yenisiyle değiştirme

Bir karakteri veya alt dizeyi başka bir karakterle değiştirmek için Değiştir yöntemini kullanın:

String text = "iyi günler"; metin = metin.Replace("iyi", "kötü"); Console.WriteLine(metin); metin = metin.Replace("o", ""); Console.WriteLine(metin);

Değiştir işlevinin kullanıldığı ikinci durumda, bir "o" karakterli dize boş bir dizeyle değiştirilir, yani aslında metinden kaldırılır. Bu yöntem, satırlardaki belirli metinlerin silinmesini kolaylaştırır.

Büyük/küçük harf değiştir

Bir dizeyi büyük ve küçük harfe dönüştürmek için sırasıyla ToUpper() ve ToLower() işlevlerini kullanın:

String merhaba = "Merhaba dünya!"; Console.WriteLine(hello.ToLower()); // Selam Dünya! Console.WriteLine(hello.ToUpper()); // SELAM DÜNYA!

p»їGüvenilir SEO Ajansı Hindistan Küçük İşletmelerin Gelirlerini Artırabilir

Kullanıcıların %80'i bir satın alma işlemi yapmadan önce Google'da ve diğer arama motorlarında arama yapıyor ve arama motorları aracılığıyla oluşturulan sorguların %50'den fazlası dönüştürülüyor. Bu iki istatistik Arama Motoru Optimizasyonunun önemini kanıtlıyor. Açık bir noktayı ortaya koyan pek çok istatistik ve gerçek vardır: küçük, orta veya büyük ölçekli her işletmenin profesyonel SEO hizmetlerine ihtiyacı vardır. Küçük işletmeler ve yeni kurulan girişimler sıklıkla bütçe sorunlarıyla karşı karşıya kalır. Gelirlerini artırmak için bütçelerinde en iyi SEO hizmetini almak için Hindistan'daki herhangi bir güvenilir SEO ajansından yardım alabilirler.
Arama, tüketicilerin zihninde büyük bir etkiye sahiptir. Büyük arama motoru optimizasyonu uzmanları tarafından Search Engine Land, Moz, SEO Journal, Digital Marketingers India, Hubspot vb. gibi çeşitli yetkili web sitelerinde paylaşılan çeşitli istatistiklere göre. SEO potansiyel müşterilerin çoğunu yakalar. Ayrıca organik arama sonuçlarından gelen potansiyel müşterilerin dönüşüm oranı daha yüksektir. Bu istatistikler ve tüketici davranışları, en iyi SEO hizmetinin bir lüks değil, her işletme için bir zorunluluk olduğunu daha net bir şekilde ortaya koyuyor.
Rekabeti atlatmak ve iş büyümesini artırmak için her kuruluşun Arama Motoru Optimizasyonu hizmetlerini kullanması gerekir. Büyük markalar, üst düzey bir SEO şirketi veya SEO uzmanı tarafından sunulan uzman SEO hizmeti için yeterli miktarda yatırım yapabilir ancak küçük işletme sahipleri, daha az bütçe nedeniyle genellikle bu hizmetin kalitesinden ödün verirler. Küçük işletmelerin ve yeni başlayanların, profesyonel SEO hizmetiyle yaratılabilecek fırsatları terk etmeleri veya hiçbir olumlu sonuç getirmeyen ucuz bir SEO hizmeti kullanmaları zor bir gerçektir.
Küçük işletme sahipleri ve start-up'lar, sınırlı bütçeyle bile profesyonel SEO hizmetlerinden yararlanabilirler. En iyi çözüm Hindistan merkezli güvenilir bir SEO şirketi bulmaktır. Hindistan'da dijital pazarlama ajansıyla çalışan ve sektörün en iyi hizmetlerini sunan birçok SEO uzmanı var. Bütçeniz dahilinde size gerekli SEO hizmetlerini sağlayabilirler. Ücretler, daha düşük ücretlerle daha iyi hizmet almak için Hindistan'daki bir SEO ajansı ile müzakere edilebilir. Ancak, daha az ücret alan ve uzmanlığın kendi maliyeti olduğu için daha fazlasını sunmayı vaat eden ucuz SEO hizmetine kanmayın. İşletmeniz için bir şirketle sözleşme imzalamadan önce portföyü görmeli veya uygun soruları sormalısınız.
Hindistan'daki SEO uzmanları, arama motoru optimizasyonunun en iyi uygulamaları konusunda yeteneklidir. Ayrıca Hindistan'da, belirtilen bütçeyle bir işletme için en iyi arama motoru optimizasyonu stratejisini oluşturma konusunda uzmanlaşmış Ash Vyas gibi bazı SEO uzmanları da bulunmaktadır. SEO uzmanları net bir plan oluşturacak ve aynı zamanda beklenen sonuçların neler olabileceğini de paylaşacaklar. Bu sayede yatırımınız ve getirileriniz hakkında daha iyi bilgi sahibi olabilirsiniz. Bu, daha iyi bir iş kararı vermenize yardımcı olur.
İyi bir fikir, mümkün olan en kısa sürede en iyi SEO hizmetlerini sunan Hindistan'dan güvenilir bir SEO şirketi bulmak ve onunla sözleşme yapmaktır. Web Sayfalarınızın dizine eklenmesini sağlamak ve anahtar kelimelerinizi arama motorlarında yükseltmek için küçük bir bütçe ve sınırlı etkinliklerle de başlayabilirsiniz. beklemeyin mükemmel En iyi SEO hizmetlerine yatırım yapmak için binlerce dolarınızın olacağı bir zaman veya gün. Erken başlamak, pazarlama yaklaşımınızda agresif davranabildiğinizde daha hızlı sonuçlar almanıza yardımcı olacaktır. Hindistan merkezli güvenilir bir SEO şirketi, iyi sonuçlar elde etmek için mevcut ve gelecekteki planlarınızı tanımlamanıza yardımcı olacaktır. Daha fazla dizine eklenen sayfalar, işletmenizin sıralamasını yükseltir ve sürekli profesyonel SEO uygulamalarıyla yapılan güvenilir marka, sorguları, işletmeleri ve gelirleri ikiye katlar. Herhangi bir küçük işletme, profesyonel SEO hizmetlerine iki haneli yatırımla başlayabilir. Hindistan'da düşük bütçeli ancak odaklı Arama Motoru Optimizasyonu hizmetlerinden kaynaklanan birçok SEO ajansı var.

sürgünden anketler

  • CraigWew

    12.04.2018

    p»їGayrimenkul ve Genel Satışta Müşteriyle Yakınlık Kurmanın Önemi

    Müşteri ile ilişki kurmanın önemi.
    Müşteriyle yakınlık kurmanın kazanılması gerekir ve buna satış sürecinin ayrılmaz bir parçası olarak yaklaşılmalıdır.
    Bir müşteriyle gerçek bir birebir ilişki kurmanızı sağlamak iki şeyi gerektirir!
    Öncelikle farkında olmanız ve orada olmanız gerekecek! İkincisi, bu süreçte iki farklı aşamanın gerçekleşeceğini anlamalısınız.
    A-Orada ol-bu ne anlama geliyor?
    o Çoğu insan başka bir kişiyi konuşurken gerçekten dinlemez. Genellikle bir sonraki cevaplarını veya açıklamalarını formüle etmekle o kadar meşguller ki muhtemelen gerçekten dinleyemiyorlar.
    o Eğer bu size benziyorsa, orada olmak susmak ve dinlemek demektir!
    B-İlk aşama veya başlangıç ​​aşaması nedir?
    o Müşterilerin zihninde, ilgilenmek istedikleri biri olarak yer edinmek için genellikle yalnızca birkaç dakikanız vardır.
    o Şüpheye düştüğünüzde öncelikle onları konuya yöneltecek sorular sormak ve kendileri hakkında konuşmak en iyisidir.
    o Bir profesyonel gibi görünmek de her zaman güvenlidir; metanetli veya soğukkanlılığı kastetmiyorum, ama ne yaptığını bilen, konuşan ve rolüne uygun görünen birini kastediyorum.
    C-Diğer aşamalar
    o Zaman geçtikçe, sohbetler ve soracakları sorularla yeteneğinizi ya ortaya çıkaracaksınız ya da ortaya koyamayacaksınız.
    o Muhtemelen bir süre sizi ölçeceklerini unutmayın. İyi haber şu ki, bir noktada, eğer yakınlık kurmayı başardıysanız, rahatlayacaklar ve ikiniz de evi bulmaya veya satmaya konsantre olabilirsiniz.
    İlişki geliştirmeme başka ne yardımcı olabilir?
    o Farklı kişilik tiplerini anlamaya çalışarak ve ardından doğru soruları söyleyip sorarak.
    o Eğer iyi bir uyumunuz varsa (müşteriyle aynı dalga boyuna sahipseniz), o zaman satış aslında bitmiştir, artık sadece doğru evi bulma veya ilan evraklarını doldurma meselesidir.
    Peki farklı kişilikler
    o Bu psikiyatri üzerine bir kitap olmadığından şimdilik sadece iki ana türü anlayın.
    o İçe dönük ve dışa dönük insanlar vardır.
    o Türü biliyorsunuz. Her sınıflandırmaya uyan tanıdığınız üç kişiyi düşünün.
    Peki ya beden dili ve konuşma kalıpları?
    o Hızlı ya da yavaş konuşuyorlarsa konuşma şekillerini taklit etmeye çalışın.
    o Yüksek veya alçak sesle konuşuyorlarsa siz de aynısını yapın. Öne mi yoksa geriye mi eğiliyorlar?
    o Bu konuda yazılmış pek çok kitap olduğunu söylemeye gerek yok. Bunun önemli bir faktör olduğunu unutmayın; özellikle de bir konferans odasında veya birinin evinde 400.000 dolarlık bir anlaşmayı tartışırken.
    İlişki geliştirmek öğrenilebilecek ve geliştirilebilecek bir beceridir.
    o Hepimiz bize bir şeyler satan bir satıcıyla karşılaştık ama yine de satıldığımızı hissetmedik. Bunun nedeni, güvendiğiniz yerde kendinizi rahat hissetmenizi sağlamasıdır.
    İlişkiyi nasıl geliştiririz?
    o Gözlerinizi ve kulaklarınızı kullanın ve sorular sorun. Açıklamak için
    o Gözleri kullanın:
    o Elbiselerine, arabalarına, kişisel eşyalarına bakın, yani gerçekten onlara bakın ve bunların onlar hakkında size ne anlattığını çözün.
    o Kulakları kullanın:
    o Onların gerçek MOTİVASYONUNUN temeline inmek için söylediklerini dinleyin ve sorular sorun!
    Tüm bu konuşma sırasında muhtemelen onlarla ortak noktalarınızın bir veya iki yönünü keşfedeceksiniz. (Aile, coğrafi bölgeler, balıkçılık vb.) Ortak bir noktaya rastladığınızda, onlara aşina olduğunuzu bildirin ve ardından bir dakikanızı ayırarak bu konuyu onlarla tartışın.
    Hedef Nedir?
    o Sizi onlardan biri olarak kabul ettiklerinde, satışta gerçekten harika bir deneyime sahip olacak konumda olursunuz; artık birlikte, ardından ekip olarak çalışırsınız; artık satıcı değilsiniz, artık danışmanlık pozisyonundasınız .
    o Unutmayın, müşteri onun dünyasına girmenize ya izin verir ya da vermez. Bunu anlarsanız ve onunla empati kurmak için gerçekten çok çalışırsanız, güven duyulan bir konum kazanabilirsiniz. Çoğu durumda, yoldayken bu gerçekleştiğinde aslında onların rahatladığını (beden dili) göreceksiniz.
    o Bunu örneklendirmek gerekirse, hiç bir konuşma yaptınız ve sonunda bir dinleyiciyle bağlantı kurduğunuzda, onun sizi onaylayarak başını sallayacağını fark ettiniz mi? Bunların hepsi basmakalıp görünebilir ama değiller.
    Son olarak, eğer bir müşterinin güvenini kazanabilirseniz, bir ürün veya hizmeti satmak çok daha kolay olur ve bu deneyim, katılan herkes için keyifli olabilir.
    Her zaman Kazan/Kazan'ın en iyi durum olduğunu unutmayın.

Bir karakter dizisini şunun gibi bir dizeyle karşılaştırmaya çalışıyorum:

Sabit karakter *var1 = " "; var1 = getenv("myEnvVar"); if(var1 == "dev") ( // bir şeyler yap )

Bu if ifadesi asla doğrulanmaz... var1 çıktısını aldığımda "dev" olur, bunun boş sonlandırılmış dizeyle bir ilgisi olabileceğini düşündüm ama strlen "dev" ve var1 eşittir... Ayrıca var1 = olabileceğini de düşündüm. = "dev", "dev" ifadesini bir değer yerine var1'in bellek adresiyle karşılaştırıyordu. *var1 == "dev" bir hatayla sonuçlanıyor.... pek çok şey denedim, belki bilgili bir C++ geliştiricisi için basit bir çözüm (çok uzun zamandır C++ kodlamadım).

düzenleme: denedik

If(strcmp(var1, "dev") == 0)

If(strncmp(var1, "dev", 3) == 0)

düzenleme: Evde test ettikten sonra iş arkadaşımın veri türünü string olarak değiştirmesini öneriyorum. Büyük boyutlu bir karakter dizisini bir dizeyle karşılaştırdığına inanıyorum. Bu konuda bize yardımcı olması için sizeof, strlen vb. çıktılarını alan bir program hazırladım. Yardımınız için herkese teşekkürler.

6 cevap

Dizelerle çalışmıyorsunuz. İşaretçilerle çalışıyorsunuz.

var1 bir karakter işaretçisidir (const char*). Bu bir dizi değil. Eğer boş karakterle sonlandırılmışsa, bazı C fonksiyonları onu bir dize olarak ele alacaktır, ancak bu temelde yalnızca bir işaretçidir.

Yani onu bir karakter dizisiyle karşılaştırdığınızda, dizi bir işaretçiye bölünür ve derleyici, operatörü == (const char*, const char*) bulmaya çalışır.

Böyle bir operatör var. İki işaretçiyi kabul eder ve aynı adresi işaret ediyorlarsa true değerini döndürür. Böylece derleyici bunu çağırır ve kodunuz bozulur.

EĞER dize karşılaştırmaları yapmak istiyorsanız, derleyiciye işaretçilerle değil dizelerle ilgilenmek istediğinizi söylemelisiniz.

Bunu yapmak için strcmp işlevini kullanmanız gerekir:

Strcmp(var1, "dev");

İki dize eşitse bu, null değerini döndürür. (Sol taraf sözlüksel olarak sağ taraftan büyükse sıfırdan büyük bir değer, aksi halde sıfırdan küçük bir değer döndürür.)

Dolayısıyla eşitliği karşılaştırmak için aşağıdakilerden birini yapmanız gerekir:

If (!strcmp(var1, "dev"))(...) if (strcmp(var1, "dev") == 0) (...)

Std::string var1 = getenv("myEnvVar"); if(var1 == "dev") ( // bir şeyler yap )

Derleyici artık bir dize ile bir karakter işaretçisi arasında bir karşılaştırmayla karşılaşır. Bunu halledebilir çünkü bir karakter işaretçisi dolaylı olarak bir dizgeye dönüştürülebilir ve bu da dizeden dizeye karşılaştırma sağlar. Ve tam da beklediğiniz gibi davranıyorlar.

Bu kodda dize değerlerini karşılaştırmıyorsunuz, işaretçi değerlerini karşılaştırıyorsunuz. Dize değerlerini karşılaştırmak istiyorsanız strcmp gibi bir dize karşılaştırma işlevi kullanmanız gerekir.

If (0 == strcmp(var1, "dev")) ( .. )

"dev" bir dize değil, var1 gibi bir const char *'dır. Bu şekilde aslında bellek adreslerini karşılaştırıyorsunuz. var1 bir karakter işaretçisi olduğundan, *var1 tek bir karakterdir (daha doğrusu, belirtilen karakter dizisinin ilk karakteri). Char'ı bir karakter işaretçisiyle karşılaştıramazsınız, bu yüzden işe yaramadı. Ve başlığa bir bildirim ekleyin.

// Parametreler olası nesne bozulmalarını önlemek için "const"u kullanır. bool string_equal (const char* arg0, const char* arg1);

Kullanmak için, bir if (veya üçlü) ifadesinin/bloğunun koşulu olarak "string_equal" çağrısını yapmanız yeterlidir.

If (string_equal (var1, "dev")) ( // Eşittir, burada gerekeni yapın. ) else ( // Eşit değil, burada gerekeni yapın (isteğe bağlı). )

34

--- C# Kılavuzu --- Dizeler

Düzenli programlama açısından bakıldığında, string dize veri türü C#'ın en önemlilerinden biridir. Bu tür karakter dizilerini tanımlar ve destekler. Diğer bazı programlama dillerinde dize, bir karakter dizisidir. Ve C#'ta dizeler nesnelerdir. Bu nedenle string türü bir referans türüdür.

Dizeleri oluşturma

Bir karakter dizesi oluşturmanın en basit yolu, bir dize değişmezi kullanmaktır. Örneğin, aşağıdaki kod satırı, dize referans değişkeni str'ye bir dize değişmezine bir başvuru atar:

String str = "Örnek dize";

Bu durumda str değişkeni "Örnek Dizge" karakter dizisiyle başlatılır. string türünde bir nesne, char türünde bir diziden de oluşturulabilir. Örneğin:

Karakter chararray = ("e", "x", "a", "m", "p", "l", "e"); string str = yeni string(chararray);

Bir dize nesnesi oluşturulduktan sonra, tırnak içine alınmış bir metin dizisine ihtiyaç duyduğunuz her yerde kullanılabilir.

Dize kalıcılığı

Garip bir şekilde, string türündeki bir nesnenin içeriği değiştirilemez. Bu, bir karakter dizisi oluşturulduktan sonra değiştirilemeyeceği anlamına gelir. Ancak bu sınırlama, karakter dizilerinin daha verimli uygulanmasına katkıda bulunur. Dolayısıyla bu bariz görünen dezavantaj aslında avantaja dönüşüyor. Bu nedenle, mevcut bir dizenin varyasyonu olarak bir dize gerekiyorsa, bu amaçla gerekli tüm değişiklikleri içeren yeni bir dize oluşturulmalıdır. Kullanılmayan dize nesneleri otomatik olarak çöp olarak toplandığından, gelecekteki kader Gereksiz çizgiler konusunda endişelenmenize bile gerek yok.

Bununla birlikte, dizelere yapılan değişken başvuruların (yani dize türündeki nesnelerin) değişebileceği ve bu nedenle başka bir nesneye gönderme yapabilecekleri vurgulanmalıdır. Ancak dize nesnesinin içeriği, oluşturulduktan sonra değişmez.

Bir örneğe bakalım:

Static void addNewString() ( string s = "Bu benim vuruşum"; s = "Bu yeni vuruş"; )

Uygulamayı derleyelim ve elde edilen derlemeyi ildasm.exe yardımcı programına yükleyelim. Şekil, void addNewString() yöntemi için oluşturulacak CIL kodunu gösterir:

Ldstr (dize yükleme) işlem koduna çok sayıda çağrı yapıldığını unutmayın. Bu CIL ldstr işlem kodu, yönetilen yığına yeni bir dize nesnesinin yüklenmesini gerçekleştirir. Sonuç olarak, "Bu benim vuruşum" değerini içeren önceki nesne eninde sonunda çöp olarak toplanacaktır.

Dizelerle Çalışmak

sınıfta Sistem.Dize Karakter verilerinin uzunluğunun belirlenmesi, geçerli dizede bir alt dizenin aranması, karakterlerin büyük harften küçük harfe ve tam tersi olarak dönüştürülmesi vb. için bir dizi yöntem sağlanmıştır. Daha sonra bu sınıfa daha ayrıntılı olarak bakacağız.

Alan, Dizin Oluşturucu ve Dize Sınıfı Özelliği

String sınıfı tek bir alanı tanımlar:

Genel statik salt okunur dize Boş;

Boş alan boş bir dizeyi belirtir; herhangi bir karakter içermeyen bir dize. Bu, var olmayan bir nesneye yapılan boş bir String referansından farklıdır.

Ek olarak, String sınıfı tek bir salt okunur dizin oluşturucuyu tanımlar:

Genel karakter bu ( get; )

Bu indeksleyici, belirtilen indeksteki bir karakteri almanızı sağlar. Diziler gibi dizelerin indekslenmesi sıfırdan başlar. String nesneleri kalıcıdır ve değişmez; dolayısıyla String sınıfının salt okunur bir dizin oluşturucuyu desteklemesi mantıklıdır.

Son olarak, String sınıfı tek bir salt okunur özelliği tanımlar:

Genel int Uzunluk ( get; )

Uzunluk özelliği dizedeki karakter sayısını döndürür. Aşağıdaki örnek, dizin oluşturucunun ve Uzunluk özelliğinin kullanımını gösterir:

Sistemin Kullanımı; class Örnek ( static void Main() ( string str = "Basit dize"; // Dizin uzunluğunu ve satırdaki 6. karakteri indeksleyiciyi kullanarak bulun Console.WriteLine("Dizenin uzunluğu (0), 6. karakterdir) karakter: "(1)"" , str.Length, str);

Dize Sınıfı Operatörleri

String sınıfı şu iki operatörü aşırı yükler: == ve !=. == operatörü iki karakter dizisinin eşitliğini test etmek için kullanılır. == operatörü nesne referanslarına uygulandığında, genellikle her iki referansın da aynı nesneye yapılıp yapılmadığını test eder. Ve == operatörü String türündeki nesnelere yapılan başvurulara uygulandığında, dizelerin içerikleri eşitlik açısından karşılaştırılır. Aynı durum != operatörü için de geçerlidir. String türündeki nesnelere yapılan başvurulara uygulandığında, dizelerin içerikleri eşitsizlik açısından karşılaştırılır. Bununla birlikte, = dahil olmak üzere diğer ilişkisel operatörler, diğer türdeki nesnelere yapılan başvuruları karşılaştırdıkları gibi, String türündeki nesnelere yapılan başvuruları da karşılaştırırlar. Bir dizenin diğerinden büyük olup olmadığını kontrol etmek için String sınıfında tanımlanan Compare() yöntemini çağırmalısınız.

Açıkça görüleceği gibi, birçok karakter dizisi karşılaştırması türü kültürel bilgilere dayanmaktadır. Ancak bu == ve != operatörleri için geçerli değildir. Sonuçta, sadece dizelerdeki karakterlerin sıra değerlerini karşılaştırırlar. (Yani kültürel normlar yani yerel standartlar tarafından değiştirilmemiş karakterlerin ikili değerlerini karşılaştırırlar.) Dolayısıyla bu operatörler string karşılaştırmalarını büyük/küçük harfe ve kültüre duyarsız bir şekilde gerçekleştirirler.

Dize sınıfı yöntemleri

Aşağıdaki tablo, bu sınıftaki en ilginç yöntemlerden bazılarını amaca göre gruplandırılmış olarak listelemektedir:

Dizelerle çalışma yöntemleri
Yöntem Yapı ve aşırı yükler Amaç
Dize karşılaştırması
karşılaştırmak() public static int Compare(string strA, string strB)

Public static int Compare(string strA, string strB, bool görmezdenCase)

Public static int Compare(string strA, string strB, StringComparison karşılaştırmaType)

Public static int Compare(string strA, string strB, bool görmezdenCase, CultureInfo kültürü)

Statik yöntem strA dizesini strB dizesiyle karşılaştırır. strA, strB'den büyükse pozitif bir değer döndürür; strA strB'den küçükse negatif; ve strA ve strB dizeleri eşitse sıfır. Karşılaştırmalar sicil ve kültüre göre yapılır.

IgnoreCase true olarak değerlendirilirse, karşılaştırma büyük ve küçük harfler arasındaki farkları dikkate almaz. Aksi takdirde bu farklılıklar dikkate alınır.

CompareType parametresi dizelerin karşılaştırılma yöntemini belirtir. CultureInfo sınıfı System.Globalization ad alanında tanımlanır.

public static int Compare(string strA, int indexA, string strB, int indexB, int uzunluk)

Public static int Compare(string strA, int indexA, string strB, int indexB, int uzunluk, bool görmezdenCase)

Public static int Compare(string strA, int indexA, string strB, int indexB, int uzunluk, StringComparison karşılaştırmaType)

Public static int Compare(string strA, int indexA, string strB, int indexB, int uzunluk, bool görmezdenCase, CultureInfo kültürü)

strA ve strB dizelerinin parçalarını karşılaştırır. Karşılaştırma strA ve strB dize öğeleriyle başlar ve uzunluk parametresi tarafından belirtilen sayıda karakter içerir. Yöntem, strA dizesinin bir kısmı strB dizesinin bir kısmından büyükse pozitif bir değer döndürür; strA dizesinin bir kısmı strB dizesinin bir kısmından küçükse negatif değer; ve strA ve strB dizelerinin karşılaştırılan kısımları eşitse sıfır. Karşılaştırmalar sicil ve kültüre göre yapılır.

KarşılaştırmaSırasını() public static int CompareOrdinal(string strA, string strB)

Public static int CompareOrdinal(string strA, int indexA, string strB, int indexB, int count)

Compare() yöntemiyle aynı şeyi yapar ancak yerel ayarları dikkate almaz

Karşılaştır() public int CompareTo(nesne değeri)

Çağıran dizeyi değer nesnesinin dize gösterimiyle karşılaştırır. Çağıran dize değerden büyükse pozitif bir değer döndürür; çağıran dize değerden küçükse negatif; ve karşılaştırılan dizeler eşitse sıfır

public int CompareTo(string strB)

Çağıran dizeyi strB dizesiyle karşılaştırır

Eşittir() genel geçersiz kılma bool Equals(object obj)

Çağıran dize, obj'nin dize temsiliyle aynı karakter dizisini içeriyorsa, boolean true değerini döndürür. Büyük/küçük harfe duyarlı ancak kültürel açıdan duyarsız sıralı karşılaştırma gerçekleştirir

public bool Eşittir(dize değeri)

Public bool Equals(string value, StringComparison CompareType)

Çağıran dize, dize değeriyle aynı karakter dizisini içeriyorsa true boolean değerini döndürür. Büyük/küçük harfe duyarlı ancak kültürel açıdan duyarlı olmayan bir sıralı karşılaştırma gerçekleştirilir. CompareType parametresi dizelerin karşılaştırılma yöntemini belirtir

public static bool Equals(string a, string b)

Public static bool Equals(string a, string b, StringComparison CompareType)

a dizesi b dizesiyle aynı karakter dizisini içeriyorsa true boolean değerini döndürür. Büyük/küçük harfe duyarlı ancak kültürel açıdan duyarlı olmayan bir sıralı karşılaştırma gerçekleştirilir. CompareType parametresi dizelerin karşılaştırılma yöntemini belirtir

Dizelerin birleştirilmesi (bağlantısı)
Concat() public static string Concat(string str0, string str1);

genel statik dize Concat(dize değerlerini değiştirir);

Bireysel dize örneklerini tek bir dizede birleştirir (birleştirme)
Bir dizede ara
İçerir() public bool İçerir(dize değeri) Bir dizenin belirli bir alt dize (değer) içerip içermediğini belirlemenize olanak tanıyan bir yöntem
İle Başlar() public bool StartsWith(dize değeri)

Public bool StartsWith(string değeri, StringComparison karşılaştırmaType)

Çağıran dize alt dize değeriyle başlıyorsa true boolean değerini döndürür. Aksi halde false boolean değeri döndürülür. CompareType parametresi, aramayı gerçekleştirmenin özel yolunu belirtir

Biter() public bool EndsWith(dize değeri)

Public bool EndsWith(string değeri, StringComparison karşılaştırmaType)

Çağıran dize alt dize değeriyle bitiyorsa true boolean değerini döndürür. Aksi takdirde boolean false değerini döndürür. CompareType parametresi belirli arama yöntemini belirtir

IndexOf() public int IndexOf(karakter değeri)

Public int IndexOf(dize değeri)

Belirli bir alt dizenin veya karakterin dizedeki ilk oluşumunu bulur. Aranan karakter veya alt dize bulunamazsa -1 değeri döndürülür.

public int IndexOf(char değeri, int startIndex)

Public int IndexOf(string değeri, int startIndex)

Public int IndexOf(char value, int startIndex, int count)

Public int IndexOf(string değeri, int startIndex, int count)

Çağıran dizedeki karakterin veya alt dize değerinin ilk geçtiği yerin dizinini döndürür. Arama, startIndex tarafından belirtilen öğede başlar ve count (belirtilmişse) tarafından belirtilen öğe sayısını kapsar. Aranan karakter veya alt dize bulunamazsa yöntem -1 değerini döndürür

LastIndexOf() Aşırı yüklenmiş sürümler IndexOf() yöntemine benzer

IndexOf ile aynıdır ancak bir karakterin veya alt dizenin ilk örneğini değil son örneğini bulur

IndexOfAny() public int IndexOfAny(char anyOf)

Public int IndexOfAny(char anyOf, int startIndex)

Public int IndexOfAny(char anyOf, int startIndex, int count)

Çağıran dizede bulunan anyOf dizisindeki herhangi bir karakterin ilk oluşumunun dizinini döndürür. Arama, startIndex tarafından belirtilen öğede başlar ve count (belirtilmişse) tarafından belirtilen öğe sayısını kapsar. AnyOf dizisindeki hiçbir karakter eşleşmezse yöntem -1 değerini döndürür. Arama sıralı bir şekilde gerçekleştirilir

LastIndexOfAny Aşırı yüklenmiş sürümler IndexOfAny() yöntemine benzer

Çağıran dizede bulunan anyOf dizisindeki herhangi bir karakterin son oluşumunun dizinini döndürür

Dizeleri bölme ve birleştirme
Bölmek genel dize Bölme(karakter ayırıcıyı değiştirir)

Genel dize Split(params karakter ayırıcı, int sayısı)

Belirtilen karakter veya dize dizisindeki öğelerle birbirinden ayrılan, bu örnekte mevcut olan alt dizeleri içeren bir dize dizisi döndüren bir yöntem.

Split() yönteminin ilk biçiminde çağıran dize, bileşen parçalarına bölünür. Sonuç, çağıran dizeden elde edilen alt dizeleri içeren bir dizidir. Bu alt dizeleri sınırlayan karakterler ayırıcı diziye aktarılır. Ayırıcı dizisi boşsa veya boş dizeye başvuruyorsa, alt dize ayırıcısı olarak bir boşluk kullanılır. Bu yöntemin ikinci biçiminde ise count parametresi tarafından belirlenen alt dizi sayısı döndürülür.

public string Split(karakter ayırıcıyı, StringSplitOptions seçeneklerini ayarlar)

Genel dize Bölme(dize ayırıcı, StringSplitOptions seçenekleri)

Genel dize Split(karakter ayırıcıyı, int sayısını, StringSplitOptions seçeneklerini belirtir)

Genel dize Bölme(dize ayırıcı, int sayısı, StringSplitOptions seçenekleri)

Split() yönteminin ilk iki biçiminde çağıran dize parçalara bölünür ve çağıran dizeden elde edilen alt dizeleri içeren bir dizi döndürülür. Bu alt dizeleri ayıran karakterler ayırıcı diziye aktarılır. Ayırıcı dizisi boşsa ayırıcı olarak boşluk kullanılır. Bu yöntemin üçüncü ve dördüncü formlarında ise count parametresi ile sınırlandırılan satır sayısı döndürülür.

Ancak tüm biçimlerde options parametresi, iki sınırlayıcı bitişik olduğunda üretilen boş satırları işlemenin belirli bir yolunu belirtir. StringSplitOptions numaralandırması yalnızca iki değeri tanımlar: Hiçbiri Ve Boş Girişleri Kaldır. Seçenekler Yok ise boş dizeler, orijinal dizenin son bölünme sonucuna dahil edilir. Ve options parametresi RemoveEmptyEntries olarak ayarlanmışsa, orijinal dizeyi bölmenin nihai sonucundan boş satırlar hariç tutulur.

Katılmak() genel statik dize Birleştirme (dize ayırıcı, dize değeri)

Genel statik dize Birleştirme(dize ayırıcı, dize değeri, int startIndex, int sayısı)

Bir dize dizisinin içeriğini birleştirerek yeni bir dize oluşturur.

join() yönteminin ilk biçimi, değer dizisinde iletilen birleştirilmiş alt dizelerden oluşan bir dize döndürür. İkinci biçim aynı zamanda değer dizisinde iletilen alt dizelerden oluşan bir dize döndürür, ancak bunlar, değer dizisi öğesinden başlayarak belirli bir sayı sayısında birleştirilir. Her iki biçimde de, sonraki her satır, önceki satırdan separator parametresi tarafından belirtilen bir ayırıcı çizgiyle ayrılır.

Doldurma ve düzeltme hatları
Kırp() genel dize Trim()

Genel dize Trim(char trimChars parametreleri)

Geçerli satırın başından ve sonundan belirli bir karakter kümesinin tüm oluşumlarını kaldırmanıza olanak tanıyan bir yöntem.

Trim() yönteminin ilk biçimi, çağıran dizenin başındaki ve sonundaki boşlukları kaldırır. Ve bu yöntemin ikinci biçimi, çağıran karakter dizisinin baştaki ve sondaki oluşumlarını trimChars dizisinden kaldırır. Her iki form da sonuçta ortaya çıkan dizeyi döndürür.

PadLeft() genel dize PadLeft(int totalWidth)

Genel dize PadLeft(int totalWidth, char paddingChar)

Bir dizeyi soldaki karakterlerle doldurmanıza olanak tanır.

PadLeft() yönteminin ilk biçimi, çağıran dizenin sol tarafına boşluklar ekler, böylece toplam uzunluğu şu şekilde olur: değere eşit totalWidth parametresi. Bu yöntemin ikinci biçiminde ise paddingChar parametresinin gösterdiği karakterler çağıran stringin sol tarafına girilir, böylece toplam uzunluğu totalWidth parametresinin değerine eşit olur. Her iki form da sonuçta ortaya çıkan dizeyi döndürür. TotalWidth parametresinin değeri çağıran dizenin uzunluğundan küçükse, değişmeyen çağıran dizenin bir kopyası döndürülür.

TamponSağ() PadLeft() ile aynı

Sağa karakter içeren bir dize eklemenizi sağlar.

Satır ekleme, silme ve değiştirme
Sokmak() public string Insert(int startIndex, string değeri)

Bir satırı diğerine eklemek için kullanılır; burada değer, startIndex'te çağıran satıra eklenecek satırı belirtir. Yöntem, sonuçta ortaya çıkan dizeyi döndürür.

Kaldırmak() genel dize Kaldır(int startIndex)

Genel dize Kaldır(int startIndex, int count)

Bir dizenin bir kısmını kaldırmak için kullanılır. Remove() yönteminin ilk biçiminde kaldırma işlemi startIndex ile gösterilen konumda başlar ve satır sonuna kadar devam eder. Bu yöntemin ikinci biçiminde ise startIndex indeksinin gösterdiği yerden başlanarak count parametresi ile belirlenen sayıda karakter string üzerinden kaldırılır.

Yer değiştirmek() genel dize Değiştir(char oldChar, char newChar)

Genel dize Değiştir(string eskiDeğer, string yeniDeğer)

Bir dizenin bir kısmını değiştirmek için kullanılır. Change() yönteminin ilk biçiminde, çağıran dizedeki oldChar karakterinin tüm oluşumları, newChar karakteriyle değiştirilir. Ve bu yöntemin ikinci biçiminde, çağrı satırındaki oldValue dizesinin tüm oluşumları, newValue dizesiyle değiştirilir.

Büyük/küçük harf değiştir
ToUpper() genel dize ToUpper()

Çağıran dizedeki tüm harfleri büyük harfe çevirir.

Aşağıya() genel dize ToLower()

Çağıran dizedeki tüm harfleri küçük harfle yazın.

Bir dizeden bir alt dize alma
Alt dize() genel dize Substring(int startIndex)

Genel dize Substring(int startIndex, int uzunluk)

Substring() yönteminin ilk biçiminde, startIndex parametresi tarafından belirtilen konumdan başlayarak çağıran dizenin sonuna kadar bir alt dize alınır. Bu yöntemin ikinci biçiminde ise startIndex parametresinin gösterdiği yerden başlanarak, uzunluk parametresi ile belirlenen sayıda karakterden oluşan bir alt dizi çıkartılır.

Aşağıdaki örnek program yukarıdaki yöntemlerden birkaçını kullanır:

Sistemin Kullanımı; System.Collections.Generic'i kullanarak; System.Linq'i kullanarak; System.Text'i kullanarak; namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( // İlk iki satırı karşılaştırın string s1 = "bu bir dizedir"; string s2 = "bu metindir ve bu bir dizedir"; if (String. CompareOrdinal(s1, s2) != 0) Console.WriteLine("String.Compare(s1, 0, s2, 13, 10, true) == 0) Console.WriteLine ("Ancak, aynı metni içerirler"); // Dizelerin birleştirilmesi Console.WriteLine(String.Concat("\n" + "Bir, iki ","üç, dört") // Bir dizede arama yapın // / Bir alt dizenin ilk oluşumu if (s2.IndexOf("this") != -1) Console.WriteLine("\"this\" sözcüğü satırda bulunuyor, "+ " konumunda: (0) pozisyon", s2.IndexOf("bu")); / Alt dizenin son geçtiği yer if (s2.LastIndexOf("bu") != -1) Console.WriteLine("\"this\" kelimesinin son geçtiği yer) is " + "(0) konumunda", s2.LastIndexOf("this" )); // Karakter dizisinden arama char myCh = ("Y", "x", "t"); if (s2. IndexOfAny(myCh) != -1) Console.WriteLine("Geçerli satırda (0) konumunda bulunan ch "+ "dizisindeki karakterlerden biri", s2.IndexOfAny(myCh));

// Satırın verilen alt dizeyle başlayıp başlamadığını belirleyin if (s2.StartsWith("this is text") == true) Console.WriteLine("Alt dize bulundu!");

// Kullanıcının işletim sistemi dizesini belirleme örneğini kullanarak dizenin bir alt dize içerip içermediğini belirleyin // myOS = Environment.OSVersion.ToString();

    if (myOS.Contains("NT 5.1")) Console.WriteLine("İşletim sisteminiz Windows XP");

    else if (myOS.Contains("NT 6.1")) Console.WriteLine("İşletim sisteminiz Windows 7"); Console.ReadLine();) bir dizenin başka bir dizeden büyük, küçük veya ona eşit olup olmadığını belirlemek için. Sıralı karşılaştırmada dizeler, her karakterin değiştirilmemiş değerine göre basitçe sıralanır.

Kültürel dize karşılaştırmalarının ve sıralı karşılaştırmaların farklılık gösterme şeklindeki farklılıklar ve bu tür karşılaştırmaların her birinin sonuçları nedeniyle, Microsoft tarafından şu anda sunulan en iyi uygulamaları izlemenizi önemle öneririz. Sonuçta dizeleri karşılaştırmak için yanlış yöntemin seçilmesi, programın geliştirildiği ortamdan farklı bir ortamda çalıştırılması durumunda programın hatalı çalışmasına yol açabilir.

Karakter dizilerinin nasıl karşılaştırılacağını seçmek çok önemli bir karardır. Genel bir kural olarak ve istisnasız olarak, kullanıcıya sonucu göstermek amacıyla yapılıyorsa (örneğin, sözlükbilimsel sıraya göre sıralanmış bir dizi dizeyi görüntülemek için) dizeleri kültürel açıdan hassas bir şekilde karşılaştırmayı seçmelisiniz. Ancak dizeler, dosya adı, anahtar kelime, web sitesi adresi veya güvenlik değeri gibi kültürel farklılıklar nedeniyle değiştirilmesi amaçlanmayan sabit bilgiler içeriyorsa sıralı dize karşılaştırmasını seçmelisiniz. Elbette, geliştirilmekte olan belirli uygulamanın özellikleri, karakter dizilerini karşılaştırmak için uygun bir yöntemin seçimini belirleyecektir.

String sınıfı, yukarıdaki tabloda listelenen çeşitli dize karşılaştırma yöntemleri sağlar. Bunların arasında en evrensel olanı Compare() yöntemidir. Type parametresi tarafından belirtilen şekilde, iki dizenin tamamen veya kısmen, büyük/küçük harfe duyarlı veya büyük/küçük harfe duyarlı olmayan şekilde karşılaştırılmasına olanak tanır. Dize Karşılaştırması type parametresi tarafından sağlanan kültürel bilgilerin yanı sıra KültürBilgisi.

Compare() yönteminin StringComparison parametresi içermeyen bu aşırı yüklemeleri, karakter dizelerinin büyük/küçük harfe ve kültüre duyarlı bir karşılaştırmasını gerçekleştirir. Ve CultureInfo türü parametresi içermeyen aşırı yüklenmiş varyantlarda, kültürel ortam hakkındaki bilgiler mevcut çalışma zamanı ortamı tarafından belirlenir.

StringComparison türü, aşağıdaki tabloda gösterilen değerleri tanımlayan bir numaralandırmadır. Bu değerleri kullanarak özel uygulamanızın ihtiyaçlarına uygun dize karşılaştırmaları oluşturabilirsiniz. Bu nedenle, StringComparison türünde bir parametrenin eklenmesi, Compare() yönteminin ve Equals() gibi diğer karşılaştırma yöntemlerinin yeteneklerini genişletir. Bu aynı zamanda dizelerin nasıl karşılaştırılmasının tasarlandığını açıkça belirtmeyi mümkün kılar.

Kültürel açıdan hassas dize karşılaştırmaları ile sıralı karşılaştırmalar arasındaki farklar nedeniyle bu konuda mümkün olduğunca kesin olmak önemlidir.

StringComparison numaralandırmasında tanımlanan değerler
Anlam Tanım
GüncelKültür Dize karşılaştırmaları mevcut kültürel ortam ayarları kullanılarak yapılır
GüncelKültürIgnoreCase Dize karşılaştırmaları geçerli kültür ayarları kullanılarak yapılır ancak büyük/küçük harfe duyarlı değildir
Değişmez Kültür Dize karşılaştırmaları değişmez olanlar kullanılarak yapılır; kültürel çevreye ilişkin evrensel veriler
DeğişmezKültürIgnoreCase Dize karşılaştırmaları değişmez olanlar kullanılarak yapılır; evrensel kültürel veriler ve büyük/küçük harfe duyarsız
sıralı String karşılaştırmaları, string içindeki karakterlerin sıra değerleri kullanılarak yapılır. Bu durumda sözlük düzeni bozulabilir ve semboller Belirli bir kültürel ortamda kabul edilenler göz ardı edilir
OrdinalIgnoreCase Dize karşılaştırmaları, dizedeki karakterlerin sıra değerleri kullanılarak yapılır ancak büyük/küçük harfe duyarlı değildir

Her durumda, Compare() yöntemi, karşılaştırılan ilk dize ikinciden küçükse negatif bir değer döndürür; karşılaştırılan ilk dize ikinciden büyükse pozitif; ve son olarak, karşılaştırılan her iki dize eşitse sıfır. Karşılaştırılan dizeler eşitse Compare() yöntemi sıfır döndürse de, karakter dizelerinin eşit olup olmadığını belirlemek için genellikle Equals() yöntemini veya == operatörünü kullanmak daha iyidir.

Gerçek şu ki Compare() yöntemi, karşılaştırılan dizelerin eşitliğini sıralama düzenlerine göre belirler. Bu nedenle, dizeler arasında kültürel bir karşılaştırma yapılırsa, her iki dize de sıralama düzeninde aynı olabilir, ancak içerik bakımından eşit olmayabilir. Varsayılan olarak, Equals() yönteminde dize eşitliği, karakterlerin sıra değerlerine göre ve kültürel ortam dikkate alınmadan belirlenir. Bu nedenle, varsayılan olarak, bu yöntemde her iki dize de == operatöründe yapıldığına benzer şekilde mutlak, karakter karakter eşitliği için karşılaştırılır.

Compare() yönteminin çok yönlülüğüne rağmen, karakter dizelerinin basit sıralı karşılaştırmaları için CompareOrdinal() yöntemini kullanmak daha kolaydır. Son olarak, CompareTo() yönteminin yalnızca kültürel açıdan hassas dize karşılaştırmaları yaptığını unutmayın.

Aşağıdaki program, karakter dizelerini karşılaştırmak için Compare(), Equals(), CompareOrdinal() yöntemlerinin ve == ve != operatörlerinin kullanımını gösterir. İlk iki karşılaştırma örneğinin, İngilizce konuşulan bir ortamda kültürel açıdan hassas dize karşılaştırmaları ile sıralı karşılaştırmalar arasındaki farkları açıkça gösterdiğini unutmayın:

Sistemin Kullanımı; class Örnek ( static void Main() ( string str1 = "alfa"; string str2 = "Alfa"; string str3 = "Beta"; string str4 = "alfa"; string str5 = "alfa, beta"; int result; / / İlk olarak, kültüre duyarlı dize karşılaştırması // ile sıralı karşılaştırma sonucu arasındaki farkları gösterin = String.Compare(str1, str2, StringComparison.CurrentCulture) Console.Write("Kültüre duyarlı dize karşılaştırması: " ) Console.WriteLine; (str1 + " büyüktür " + str2); else Console.WriteLine(str1 + " eşittir " + str2); result = String.Compare(str1, str2, StringComparison.Ordinal); if (sonuç 0); ) Console.WriteLine(str1 + " büyük " + str2); else Console.WriteLine(str1 + " eşittir " + str4); // CompareOrdinal() yöntemini kullanın result = String.CompareOrdinal( str1, str2); .Write("CompareOrdinal() kullanarak dizeleri karşılaştırma:\n"); if (sonuç 0) Console.WriteLine(str1 + " büyük " + str2); else Console.WriteLine(str1 + " eşittir " + str4);

Console.WriteLine();



// == operatörünü kullanarak dize eşitliğini belirleyin // Bu, karakter dizelerinin sıralı bir karşılaştırmasıdır if (str1 == str4) Console.WriteLine(str1 + " == " + str4); Arkadaşlarınızla paylaşın!