Làm thế nào để tôi có được ký tự cuối cùng của một chuỗi?


181

Làm thế nào để tôi có được ký tự cuối cùng của một chuỗi?

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

2
Bạn đã có một số câu hỏi lẫn lộn với nhau. Nhìn rộng ra, vâng, str.charAt(str.length() - 1)thường là ký tự cuối cùng trong chuỗi; nhưng xem xét những gì xảy ra nếu str trống, hoặc null.
Vance Maverick

Nó hoạt động tốt. Nhưng logic của kiểm tra palidrom không đúng, vui lòng đề cập đến lỗi bạn đang gặp phải là gì.
Zimbabao

Câu trả lời:


243

Mật mã:

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

Đầu ra của java Test abcdef:

last character: f

2
trả về nó dưới dạng một chuỗi, không phải là một ký tự, nhưng bạn đã biết cách thực hiện chuỗi sau và tôi không rõ bạn sẽ làm gì sau đó.
jcomeau_ictx

8
Nếu chuỗi của bạn trống thì sao?
Khan Khan

4
nó sẽ đưa ra một ngoại lệ trong trường hợp đó. bạn có muốn nó không?
jcomeau_ictx

Câu hỏi yêu cầu một ký tự - điều này trả về một chuỗi dài một ký tự. Nên sử dụng charAt()khôngsubstring()
Andrew

1
Andrew, nếu bạn nhìn lại câu hỏi ban đầu trước khi nó được chỉnh sửa, bạn sẽ thấy OP đã thử charAt () và đó không phải là điều cô ấy muốn. Đó là một trong những vấn đề với một phương tiện giống như wiki, các câu hỏi là một mục tiêu di động và đôi khi các câu trả lời có thể trông thật ngớ ngẩn.
jcomeau_ictx

96

Đây là một phương pháp sử dụng String.charAt():

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

Kết quả đầu ra là last char = a.


1
hãy thực sự cẩn thận nếu bạn muốn thực hiện một phép tính trên một số trong một chuỗi vì các giá trị char khá khác so với một số bằng chữ và kết quả toán học của bạn sẽ không hoạt động.
JesseBoyd

32

Các câu trả lời khác chứa rất nhiều văn bản và mã không cần thiết. Dưới đây là hai cách để có được ký tự cuối cùng của Chuỗi:

than

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

Chuỗi

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

32

Các câu trả lời khác rất đầy đủ và bạn chắc chắn nên sử dụng chúng nếu bạn đang cố gắng tìm ký tự cuối cùng của chuỗi. Nhưng nếu bạn chỉ đang cố gắng sử dụng một điều kiện (ví dụ: ký tự cuối cùng 'g'), bạn cũng có thể làm như sau:

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

hoặc, chuỗi

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

Rất hữu ích và cho điểm.
Aquarelle

4

Thử cái này:

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

Câu trả lời này là sai. Nó chỉ kiểm tra xem các ký tự đầu tiên và cuối cùng có giống nhau không.
Aquarelle

2

Giải pháp đơn giản là:

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);
}

Sử dụng một mảng ký tự (coi chừng đối số Chuỗi rỗng hoặc null rỗng khó chịu!)

Một giải pháp khác sử dụng StringBuilder (thường được sử dụng để thực hiện quản lý chuỗi vì bản thân String là bất biến.

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();
}

Tuy nhiên, một cách tiếp cận khác (nhiều hướng dẫn hơn sử dụng thực tế) là cách tiếp cận này:

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();
}

Ở đây, chuỗi hoàn chỉnh được đảo ngược và sau đó phần không nên đảo ngược được thay thế bằng chuỗi con. ;)


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

Tôi không nghĩ rằng mã này sẽ biên dịch (chỉ cần các bản sửa lỗi nhỏ), một khi bạn đã biên dịch nó, hãy kiểm tra nó trên một chuỗi trống để xem nó có hoạt động không.
Knells

2
Mặc dù câu trả lời này có thể đúng và hữu ích, nhưng nó được ưu tiên nếu bạn bao gồm một số giải thích cùng với nó để giải thích cách nó giúp giải quyết vấn đề. Điều này trở nên đặc biệt hữu ích trong tương lai, nếu có một sự thay đổi (có thể không liên quan) khiến nó ngừng hoạt động và người dùng cần phải hiểu nó đã hoạt động như thế nào. Cảm ơn!
Hatchet


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

Đầu ra phải là:

t

Chúc mừng mã hóa!


1
Đây là ví dụ chính xác được đưa ra ở đây stackoverflow.com/a/13025371/773479
John Veldboom

2

Đây là một phương thức tôi sử dụng để lấy xx cuối cùng của chuỗi:

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;
    }
}

Sau đó sử dụng nó như vậy:

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;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.