Saya tahu cara menyusun indeks karakter atau angka tertentu dalam string, tetapi apakah ada metode standar yang dapat saya gunakan untuk memberi saya karakter di posisi ke - n ? Jadi dalam string "foo", jika saya meminta karakter dengan indeks 0 itu akan mengembalikan "f".
Catatan - dalam pertanyaan di atas, berdasarkan "karakter" yang saya maksud bukan tipe data char, melainkan huruf atau angka dalam sebuah string. Yang penting di sini adalah bahwa saya tidak menerima char ketika metode dipanggil, tetapi sebuah string (panjang 1). Dan saya tahu tentang metode substring (), tapi saya bertanya-tanya apakah ada cara yang lebih rapi.
char
nilai? Dan dia tahu bagaimana melakukannyasubstring()
tetapi hanya menginginkan cara yang "lebih rapi". FYI, bisa saya katakan itusubstring()
adalah cara yang paling rapi.Character.toString
memenuhi semua persyaratan yang diperlukan dan tidak berantakan sama sekali.substring()
secara langsung.endIndex
(parameter kedua) dariString.substring(int, int)
adalah eksklusif indeks, dan itu tidak akan melemparkan sebuah pengecualian untukindex + 1
selamaindex < length()
- yang benar bahkan untuk karakter terakhir dalam string.Jawaban:
Metode yang Anda cari adalah
charAt
. Ini sebuah contoh:Untuk informasi lebih lanjut, lihat dokumentasi Java di
String.charAt
. Jika Anda ingin tutorial sederhana lainnya, ini atau ini .Jika Anda tidak ingin hasilnya sebagai
char
tipe data, melainkan sebagai string, Anda akan menggunakanCharacter.toString
metode ini:Jika Anda ingin informasi lebih lanjut tentang
Character
kelas dantoString
metodenya, saya mengambil info dari dokumentasi di Character.toString .sumber
Kamu ingin
.charAt()
Ini tutorialnya
kembali
s
Jika Anda sangat ingin memiliki string, ada beberapa cara untuk mengubah char menjadi string:
Atau
Atau bahkan
Sebagai contoh.
sumber
Character.toString
?String mychar = String.valueOf("mystring".charAt(2));
String mychar = ""+"mystring".charAt(2);
karena itu yang paling singkat. Orang lain akan berbeda pendapat tentang hal ini.Tak satu pun dari jawaban yang diusulkan berfungsi untuk pasangan pengganti yang digunakan untuk menyandikan karakter di luar Unicode Basic Multiligual Plane .
Berikut adalah contoh menggunakan tiga teknik berbeda untuk beralih ke "karakter" dari string (termasuk menggunakan Java 8 stream API). Harap perhatikan contoh ini termasuk karakter dari Unicode Supplementary Multilingual Plane (SMP). Anda memerlukan font yang tepat untuk menampilkan contoh ini dan hasilnya dengan benar.
Iterasi karakter
Solusi pertama adalah loop sederhana di atas semua
char
string:Iterasi poin kode
Solusi kedua menggunakan loop eksplisit juga, tetapi mengakses poin kode individual dengan codePointAt dan menambah indeks loop sesuai dengan charCount :
Iterasi lebih dari titik kode menggunakan Stream API
Solusi ketiga pada dasarnya sama dengan yang kedua, tetapi menggunakan Java 8 Stream API :
Hasil
Ketika Anda menjalankan program pengujian itu, Anda memperoleh:
Seperti yang Anda lihat (jika Anda dapat menampilkan hieroglif dengan benar), solusi pertama tidak menangani karakter dengan benar di luar Unicode BMP. Di sisi lain, dua solusi lainnya menghadapi pasangan pengganti.
sumber
Anda cukup macet
substring()
, mengingat kebutuhan Anda. Cara standarnya adalahcharAt()
, tetapi Anda mengatakan Anda tidak akan menerima tipe data char.sumber
toString()
tidak akan berfungsi, danvalueOf()
hanya untuk angka (saya pikir, saya mungkin salah), jadi bagaimana cara mengubah char menjadi string?char
"Character.toString
harus bekerja (ini adalah metode statis dariCharacter
kelas.Anda bisa menggunakan
String.charAt(int index)
hasil metode sebagai parameter untuk String.valueOf (char c) .sumber
Pendekatan hybrid yang dikombinasikan
charAt
dengan kebutuhan Anda untuk tidak mendapatkan char bisa dilakukanTapi itu tidak benar-benar "lebih rapi" daripada
substring()
jujur.sumber
Sesederhana:
sumber
Ini kode yang benar. Jika Anda menggunakan zybooks, ini akan menjawab semua masalah.
sumber
jika seseorang berjuang dengan kotlin, kodenya adalah:
ini akan mengembalikan char di posisi 1, dalam hal ini k ingat, indeks dimulai di posisi 0, jadi dalam contoh ini: kotlin akan menjadi k = posisi 0, o = posisi 1, t = posisi 2, l = posisi 3, i = posisi 4 dan n = posisi 5
sumber
Seperti ini:
sumber
String
panjang 1 diinginkan, bukan achar
.charAt()
sebagai solusi yang memungkinkan. Apa yang ditambahkan jawaban ini?charAt()
menggunakan indeks berbasis 1, dengan memiliki satu-satunya karakter yang berbeda dia
posisi ketiga. Jika itu benar, maka akan lebih baik bagi Anda untuk mengatakan atau menjelaskan itu daripada mengisyaratkan. Pada kenyataannya itu tidak benar:charAt()
menggunakan indeks berbasis 0, demikians
juga halnya'h'
.