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

177

Bisakah charstring pertama diambil dengan melakukan hal berikut?

MyString.ToCharArray[0]
Craig Johnston
sumber
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

aqwert
sumber
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);

Sanjay Kumaar
sumber
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.

Jon Hanna
sumber
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.

Dmitry S.
sumber
8

Atau Anda dapat melakukan ini:

MyString[0];
james_bond
sumber
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));
knkarthick24
sumber
5

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

:)

Tapi Anda juga bisa menggunakannya MyString[0].

Nayan
sumber
0

MyString.Remove (1, 2); juga berfungsi

Clint Gaydon
sumber
0

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

string anyNameForString = "" + stringVariableName[0];
Ibrahim Iqbal
sumber
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'.

Biddut Mitra
sumber
0

Di C # 8 Anda dapat menggunakan rentang.

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

Tambahkan ?setelah myStringuntuk menangani nullstring.

Dmitry S.
sumber
-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);
pengguna2849180
sumber
2
Bagaimana ini jawabannya?
Nilesh