Come ottengo l'ultimo carattere di una stringa?


181

Come ottengo l'ultimo carattere di una stringa?

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

2
Hai diverse domande confuse insieme. In generale, sì, di str.charAt(str.length() - 1)solito è l'ultimo carattere nella stringa; ma considera cosa succede se str è vuoto o nullo.
Vance Maverick

Funziona benissimo. Ma la logica del controllo palidrome non sembra corretta, per favore menziona anche qual è l'errore che stai riscontrando.
Zimbabao,

Risposte:


243

Il codice:

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

L'output di java Test abcdef:

last character: f

2
lo restituisce come una stringa, non come un carattere, ma sai già come fare quest'ultimo, e non sono chiaro su cosa stai cercando.
jcomeau_ictx,

8
Cosa succede se la stringa è vuota?
Khan danese,

4
solleverà un'eccezione in quel caso. non lo vorresti?
jcomeau_ictx,

La domanda richiede un carattere: questo restituisce una stringa lunga di un carattere. Dovranno utilizzare charAt()nonsubstring()
Andrew

1
Andrew, se guardi indietro alla domanda originale prima che fosse modificata, vedrai che l'OP ha già provato charAt () e non era quello che voleva. Questo è uno dei problemi con un supporto simile a un wiki come SO, le domande sono un bersaglio mobile e, a volte, le risposte possono sembrare sciocche come risultato.
jcomeau_ictx

96

Ecco un metodo che utilizza String.charAt():

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

L'output risultante è last char = a.


1
fai molta attenzione se vuoi fare un calcolo su un numero all'interno di una stringa poiché i valori dei caratteri sono piuttosto diversi da un numero letterale e i tuoi risultati matematici non funzioneranno.
JesseBoyd,

32

Le altre risposte contengono molto testo e codice inutili. Ecco due modi per ottenere l'ultimo carattere di una stringa:

carbonizzare

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

Corda

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

32

Le altre risposte sono molto complete e dovresti sicuramente usarle se stai cercando di trovare l'ultimo carattere di una stringa. Ma se stai solo cercando di usare un condizionale (ad esempio è l'ultimo carattere 'g'), potresti anche fare quanto segue:

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

o, stringhe

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

Molto utile e al punto.
Aquarelle,

4

Prova questo:

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

Questa risposta è sbagliata Controlla solo se il primo e l'ultimo carattere sono uguali.
Aquarelle,

2

La soluzione semplice è:

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

Usando un array di caratteri (fai attenzione al cattivo argomento String vuoto o all'argomento null String!)

Un'altra soluzione utilizza StringBuilder (che di solito viene utilizzato per eseguire la manipolazione di String poiché String stesso è immutabile.

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

Ancora un altro approccio (più per le istruzioni che per l'uso effettivo) è questo:

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

Qui la stringa completa viene invertita e quindi la parte che non deve essere invertita viene sostituita con la sottostringa. ;)


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

Non penso che questo codice verrà compilato (necessita solo di piccole correzioni), una volta che lo avrai compilato provalo su una stringa vuota per vedere se funziona.
Knells,

2
Sebbene questa risposta sia probabilmente corretta e utile, è preferibile includere una spiegazione insieme per spiegare come aiuta a risolvere il problema. Ciò diventa particolarmente utile in futuro, se c'è un cambiamento (possibilmente non correlato) che lo fa smettere di funzionare e gli utenti devono capire come funzionava una volta. Grazie!
Hatchet,


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

L'output dovrebbe essere:

t

Buona programmazione!


1
Questo è l'esatto stesso esempio qui riportato stackoverflow.com/a/13025371/773479
John Veldboom

2

Ecco un metodo che uso per ottenere l'ultimo xx di una stringa:

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

Quindi usalo così:

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;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.