C #: nasıl bir dizenin ilk char almak için?


177

charBir dizenin ilki aşağıdakiler yapılarak alınabilir mi?

MyString.ToCharArray[0]

4
Denediğinde ne öğrendin?
Michael Petrotta

1
@Michael: Derleyici hatası oluştu. Bu şekilde değilse ToCharArray'ı nasıl kullanmak istersiniz?
Craig Johnston

3
Kayıt için, ToCharArraybir yöntemdir , önce çalıştırmalısınız, örneğin char[] chars = str.ToCharArray();, kullanın char first = chars[0];. Ayrıca içine kasap yapabilirsiniz str.ToCharArray()[0];. Her iki durumda da, dizenin boş olup olmadığını ve en az bir karakteri olduğunu kontrol ettiğinizden emin olun - bunu kullanarak yapabilirsiniz if(!String.IsNullOrEmpty(str)).
Kobi

1
Craig .. ToCharArray kullanımı yanlış. Cevabımı gör.
Nayan

4
charİlk karakteri mi yoksa ilk karakteri mi istiyorsun ? Bunu denerseniz ve işe yarıyor gibi görünüyorsa, 𣊾veya 𣇞her ikisini de kullandığım bir programda başarısız olan C # ile tam olarak bu hatayla birlikte çalışın .
hippietrail

Yanıtlar:



56

Mystring[0] yeterli olmalı


51
'Fazladan beş saniye kelimelerini yazarak geçmemeli,' yeterli olmalı '.
Robert Harvey

Bu soruyu ilk olarak kim yanıtladı?
Craig Johnston

Matthew olarak görmek için en eski sekmeyi seçin
johnc

10
@johnc: Ya da daha iyisi, zaman damgasının üzerine gelin.
Jeff Mercado

21

Bunu dene,

string s1="good"; string s=s1.Substring(0,1);


6
Bu yanıtla seçilen yanıt arasındaki fark, bu çözümün bir dize döndürmesi ve diğerinin de bir karakter döndürmesidir.
Loïc Lopes

char sadece bir karakter olsun ama benim çözüm isterseniz birden fazla sonuç olabilir.
Sanjay Kumaar

1
Tip onunla ne yapmak istediğinize göre önemli olabileceğinden, sadece bir kesinlikti.
Loïc Lopes

18

Arasındaki fark MyString[0]ve MyString.ToCharArray()[0]süre, salt okunur bir dizi olarak o eski davranır dize ToCharArray()yeni bir dizi oluşturur. Birincisi, çalışacağı neredeyse her şey için daha hızlı (daha kolay ile birlikte) olacaktır, ancak ToCharArraybir diziyi kabul etmek için bir yönteminiz varsa veya diziyi değiştirmek istiyorsanız gerekli olabilir.

Dizenin boş ve boş olmadığı biliniyorsa şunları yapabilirsiniz:

string.IsNullOrEmpty(MyString) ? (char?)null : MyString[0]

bu char?, uygun şekilde dize veya dizedeki ilk karakterin birini döndürür .


char?"İlk karakter yok" olasılığını dahil etmenin bir yolu olarak bahsettiğiniz için teşekkür ederiz .
ToolmakerSteve

17

LINQ kullanabilirsiniz

char c = mystring.FirstOrDefault()

'\0'Dizenin boş olup olmadığına eşit olacaktır .


8

Veya bunu yapabilirsiniz:

MyString[0];

6
@ Robert, naw, emin olmak için bir kez daha görmek istiyorum!
jjnguy

1
Benimkileri
görmedim

1
telaşa gerek yok. Ben de her zaman yaparım. Ben gerçekten yavaş bir yazarım.
jjnguy

8

Başka bir yaklaşım:

string mystr = "hello";
MessageBox.show(mystr.Substring(0, 1));

5

Bence bunu arıyorsun MyString.ToCharArray()[0]

:)

Ama siz de kullanabilirsiniz MyString[0].



0

Bir dizeden ilk karakteri almak için aşağıdaki örnek birine yardımcı olabilir

string anyNameForString = "" + stringVariableName[0];

0

Sorunuza cevap HAYIR.

Doğru [MyString [karakterin konumu]. Durumunuz MyString [0] için 0, herhangi bir dizenin İLK karakteridir.

Bir karakter değeri '(tek tırnak) ile belirtilir, örneğin bu x karakter değeri' x 'olarak yazılır.

Bir dize değeri "(çift tırnak) ile belirtilir, örneğin bu x dize değeri" x "olarak yazılır.

Substring () yöntemi de bir karakter döndürmez, Substring () yöntemi bir dize döndürür !!!

Dize bir karakter dizisidir ve son karakter '\ 0' (boş) karakter olmalıdır. Bu, karakter dizisi ve dize arasındaki farktır ("karakter dizgisinin sonu" olarak son karaktere sahip bir karakter dizisidir "\ 0" null.

Ayrıca, "x" ifadesinin "x" ile EŞİT DEĞİLDİR. Çünkü "x" aslında 'x' + '\ 0' dır.


0

C # 8'de aralıkları kullanabilirsiniz.

myString[0..Math.Min(myString.Length, 1)]

Dizeleri işlemek için bir ?after ekleyin .myStringnull


-2

bir karakter dizisinden karakter almak sağlamaya bağlı olabilir (varsayılan değer UTF-16'dır)

https://stackoverflow.com/a/32141891

string str = new String(new char[] { '\uD800', '\uDC00', 'z' });
string first = str.Substring(0, char.IsHighSurrogate(str[0]) ? 2 : 1);

2
Bu nasıl bir cevap?
Nilesh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.