C #: bagaimana cara mendapatkan karakter pertama dari sebuah string?


177

Bisakah charstring pertama diambil dengan melakukan hal berikut?

MyString.ToCharArray[0]

4
Apa yang Anda pelajari ketika Anda mencobanya?
Michael Petrotta

1
@Michael: Ada kesalahan kompiler. Bagaimana Anda bisa menggunakan ToCharArray jika tidak dengan cara ini?
Craig Johnston

3
Sebagai catatan, ToCharArrayadalah metode , Anda harus menjalankannya terlebih dahulu, misalnya char[] chars = str.ToCharArray();, dan kemudian gunakan char first = chars[0];. Anda juga bisa memotongnya str.ToCharArray()[0];. Apa pun itu, pastikan Anda memeriksa string bukan nol dan memiliki setidaknya satu karakter - Anda dapat melakukannya menggunakan if(!String.IsNullOrEmpty(str)).
Kobi

1
Craig .. penggunaan ToCharArray salah. Lihat jawaban saya.
Nayan

4
Apakah Anda menginginkan karakter pertama charatau karakter pertama ? Jika Anda mencoba ini dan tampaknya berhasil, coba lagi dengan 𣊾atau 𣇞, yang keduanya gagal dalam program yang saya gunakan yang ditulis dalam C # dengan bug yang tepat ini.
hippietrail

Jawaban:



56

Mystring[0] Seharusnya cukup


51
Seharusnya tidak menghabiskan lima detik ekstra mengetik kata-kata, "harus cukup".
Robert Harvey

Siapa yang menjawab pertanyaan ini terlebih dahulu?
Craig Johnston

Pilih tab terlama untuk melihatnya sebagai Matius
johnc

10
@ johnc: Atau lebih baik, arahkan kursor.
Jeff Mercado

21

Coba ini,

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


6
Perbedaan antara jawaban ini dan yang dipilih adalah bahwa solusi ini mengembalikan string, dan yang lainnya mengembalikan char.
Loïc Lopes

char hanya mendapatkan satu karakter tetapi solusi saya dapat menghasilkan lebih dari satu jika Anda mau.
Sanjay Kumaar

1
Itu hanya presisi karena jenisnya dapat menjadi penting menurut apa yang ingin Anda lakukan dengannya.
Loïc Lopes

18

Perbedaan antara MyString[0]dan MyString.ToCharArray()[0]adalah bahwa yang pertama memperlakukan string sebagai array hanya-baca, sementara ToCharArray()membuat array baru. Yang pertama akan lebih cepat (bersama dengan lebih mudah) untuk hampir semua hal di mana ia akan bekerja, tetapi ToCharArraydapat diperlukan jika Anda memiliki metode yang perlu menerima array, atau jika Anda ingin mengubah array.

Jika string tidak diketahui non-null dan non-kosong, Anda dapat melakukannya:

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

yang mengembalikan karakter char?nol atau karakter pertama dalam string, yang sesuai.


Terima kasih telah menyebutkan char?sebagai cara untuk memasukkan kemungkinan "tidak ada karakter pertama".
ToolmakerSteve

17

Anda bisa menggunakan LINQ

char c = mystring.FirstOrDefault()

Itu akan sama dengan '\0'jika string kosong.


8

Atau Anda dapat melakukan ini:

MyString[0];

6
@ Robert, tidak, aku ingin melihatnya sekali lagi, hanya untuk memastikan!
jjnguy

1
Saya hanya tidak melihat yang sebelum saya :)
james_bond

1
jangan khawatir. Saya juga melakukannya sepanjang waktu. Saya typer yang sangat lambat.
jjnguy

8

Hanya pendekatan lain:

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

5

Saya pikir Anda sedang mencari ini MyString.ToCharArray()[0]

:)

Tapi Anda juga bisa menggunakannya MyString[0].



0

Contoh berikut untuk mendapatkan karakter pertama dari string mungkin dapat membantu seseorang

string anyNameForString = "" + stringVariableName[0];

0

Jawaban untuk pertanyaan Anda adalah TIDAK.

Yang benar adalah MyString [posisi karakter]. Untuk kasus Anda MyString [0], 0 adalah karakter PERTAMA dari string apa pun.

Nilai karakter ditandai dengan '(kutipan tunggal), seperti ini x nilai karakter ditulis sebagai' x '.

Nilai string ditandai dengan "(kutipan ganda), seperti nilai x string ini ditulis sebagai" x ".

Jadi metode Substring () juga tidak mengembalikan karakter, metode Substring () mengembalikan string !!!

String adalah larik karakter, dan karakter terakhir harus karakter '\ 0' (null). Itulah perbedaan antara array karakter dan string (yang merupakan array karakter dengan karakter terakhir sebagai "penanda ujung string" '\ 0' nol.

Dan perhatikan juga bahwa 'x' TIDAK SAMA dengan "x". Karena "x" sebenarnya 'x' + '\ 0'.


0

Di C # 8 Anda dapat menggunakan rentang.

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

Tambahkan ?setelah myStringuntuk menangani nullstring.


-2

mendapatkan char dari sebuah string dapat bergantung pada enconding (string default adalah UTF-16)

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
Bagaimana ini jawabannya?
Nilesh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.