Bagaimana cara mendapatkan karakter terakhir dari string?


181

Bagaimana cara mendapatkan karakter terakhir dari string?

public class Main
{
    public static void main(String[] args) 
    {
        String s = "test string";
        //char lastChar = ???
    }   
}

2
Anda punya beberapa pertanyaan yang digabungkan. Secara umum, ya, str.charAt(str.length() - 1)biasanya karakter terakhir dalam string; tetapi pertimbangkan apa yang terjadi jika str kosong, atau nol.
Vance Maverick

Ini bekerja dengan baik. Tetapi logika pemeriksaan palidrome tidak terdengar benar, harap sebutkan juga kesalahan apa yang Anda dapatkan.
Zimbabao

Jawaban:


243

Kode:

public class Test {
    public static void main(String args[]) {
        String string = args[0];
        System.out.println("last character: " +
                           string.substring(string.length() - 1)); 
    }
}

Output dari java Test abcdef:

last character: f

2
mengembalikannya sebagai string, bukan karakter, tetapi Anda sudah tahu bagaimana melakukan yang terakhir, dan saya tidak jelas tentang apa yang Anda cari.
jcomeau_ictx

8
Bagaimana jika string Anda kosong?
Danish Khan

4
itu akan menimbulkan pengecualian dalam kasus itu. tidakkah Anda menginginkannya?
jcomeau_ictx

Pertanyaan meminta karakter - ini mengembalikan string panjang satu karakter. Seharusnya charAt()tidak menggunakansubstring()
Andrew

1
Andrew, jika Anda melihat kembali pertanyaan aslinya sebelum diedit, Anda akan melihat bahwa OP sudah mencoba charAt () dan bukan itu yang ia inginkan. Itulah salah satu masalah dengan media seperti wiki seperti SO, pertanyaannya adalah target yang bergerak dan kadang-kadang jawabannya bisa terlihat konyol.
jcomeau_ictx

96

Berikut adalah metode menggunakan String.charAt():

String str = "India";
System.out.println("last char = " + str.charAt(str.length() - 1));

Output yang dihasilkan adalah last char = a.


1
berhati-hatilah jika Anda ingin melakukan perhitungan pada angka dalam string karena nilai char sangat berbeda dari angka literal dan hasil matematika Anda tidak akan berfungsi.
JesseBoyd

32

Jawaban lainnya mengandung banyak teks dan kode yang tidak perlu. Berikut adalah dua cara untuk mendapatkan karakter terakhir dari String:

arang

char lastChar = myString.charAt(myString.length() - 1);

Tali

String lastChar = myString.substring(myString.length() - 1);

32

Jawaban lain sangat lengkap, dan Anda harus menggunakannya jika Anda mencoba menemukan karakter terakhir dari sebuah string. Tetapi jika Anda hanya mencoba menggunakan kondisional (mis. Adalah karakter terakhir 'g'), Anda juga dapat melakukan hal berikut:

if (str.endsWith("g")) {

atau, string

if (str.endsWith("bar")) {

Sangat berguna dan to the point.
Aquarelle

4

Coba ini:

if (s.charAt(0) == s.charAt(s.length() - 1))

Jawaban ini salah. Ini hanya memeriksa untuk melihat apakah karakter pertama dan terakhir adalah sama.
Aquarelle

2

Solusi sederhana adalah:

public String frontBack(String str) {
  if (str == null || str.length() == 0) {
    return str;
  }
  char[] cs = str.toCharArray();
  char first = cs[0];
  cs[0] = cs[cs.length -1];
  cs[cs.length -1] = first;
  return new String(cs);
}

Menggunakan array karakter (hati-hati terhadap argumen String kosong atau null String yang buruk!)

Solusi lain menggunakan StringBuilder (yang biasanya digunakan untuk melakukan manupilasi String karena String itu sendiri tidak dapat diubah.

public String frontBack(String str) {
  if (str == null || str.length() == 0) {
    return str;
  }
  StringBuilder sb = new StringBuilder(str);  
  char first = sb.charAt(0);
  sb.setCharAt(0, sb.charAt(sb.length()-1));
  sb.setCharAt(sb.length()-1, first);
  return sb.toString();
}

Namun pendekatan lain (lebih untuk instruksi daripada penggunaan aktual) adalah yang ini:

public String frontBack(String str) {
  if (str == null || str.length() < 2) {
    return str;
  }
  StringBuilder sb = new StringBuilder(str);
  String sub = sb.substring(1, sb.length() -1);
  return sb.reverse().replace(1, sb.length() -1, sub).toString();
}

Di sini string lengkap dibalik dan kemudian bagian yang tidak boleh dibalik diganti dengan substring. ;)


2
public String lastChars(String a) {
if(a.length()>=1{
String str1 =a.substring(b.length()-1);
}
return str1;
}

Saya tidak berpikir kode ini akan dikompilasi (hanya perlu perbaikan kecil sekalipun), setelah Anda mendapatkannya kompilasi berikan tes pada string kosong untuk melihat apakah itu berfungsi.
Knells

2
Meskipun jawaban ini mungkin benar dan bermanfaat, lebih disukai jika Anda menyertakan beberapa penjelasan bersama dengan itu untuk menjelaskan bagaimana itu membantu menyelesaikan masalah. Ini menjadi sangat berguna di masa depan, jika ada perubahan (mungkin tidak terkait) yang menyebabkannya berhenti bekerja dan pengguna perlu memahami bagaimana cara kerjanya. Terima kasih!
Hatchet


2
String aString = "This will return the letter t";
System.out.println(aString.charAt(aString.length() - 1));

Output harus:

t

Selamat coding!


1
Ini adalah contoh yang persis sama yang diberikan di sini stackoverflow.com/a/13025371/773479
John Veldboom

2

Berikut adalah metode yang saya gunakan untuk mendapatkan xx terakhir dari sebuah string:

public static String takeLast(String value, int count) {
    if (value == null || value.trim().length() == 0) return "";
    if (count < 1) return "";

    if (value.length() > count) {
        return value.substring(value.length() - count);
    } else {
        return value;
    }
}

Kemudian gunakan seperti ini:

String testStr = "this is a test string";
String last1 = takeLast(testStr, 1); //Output: g
String last4 = takeLast(testStr, 4); //Output: ring

1
 public char lastChar(String s) {
     if (s == "" || s == null)
        return ' ';
    char lc = s.charAt(s.length() - 1);
    return lc;
}
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.