Comment obtenir le dernier caractère d'une chaîne?

181

Comment obtenir le dernier caractère d'une chaîne?

public class Main
{
    public static void main(String[] args) 
    {
        String s = "test string";
        //char lastChar = ???
    }   
}
lonesarah
la source
2
Vous avez plusieurs questions mélangées. En gros, oui, str.charAt(str.length() - 1)est généralement le dernier caractère de la chaîne; mais considérez ce qui se passe si str est vide ou nul.
Vance Maverick
Son fonctionne bien. Mais la logique de la vérification palidrome ne semble pas correcte, veuillez également mentionner quelle est l'erreur que vous obtenez.
Zimbabwe

Réponses:

243

Le code:

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

La sortie de java Test abcdef:

last character: f
jcomeau_ictx
la source
2
le renvoie sous forme de chaîne, pas de caractère, mais vous savez déjà comment faire ce dernier, et je ne suis pas clair sur ce que vous recherchez.
jcomeau_ictx
8
Et si votre chaîne est vide?
Danish Khan
4
il soulèvera une exception dans ce cas. ne le voudriez-vous pas?
jcomeau_ictx
La question demande un caractère - cela renvoie une chaîne d'un caractère. Ne devrait charAt()pas utilisersubstring()
Andrew
1
Andrew, si vous regardez la question d'origine avant qu'elle ne soit éditée, vous verrez que l'OP a déjà essayé charAt () et ce n'était pas ce qu'elle voulait. C'est l'un des problèmes avec un support de type wiki tel que SO, les questions sont une cible mouvante et parfois les réponses peuvent paraître idiotes.
jcomeau_ictx
96

Voici une méthode utilisant String.charAt():

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

Le résultat obtenu est last char = a.

Aniket
la source
1
soyez vraiment prudent si vous voulez faire un calcul sur un nombre dans une chaîne car les valeurs char sont assez différentes d'un nombre littéral et vos résultats mathématiques ne fonctionneront pas.
JesseBoyd
32

Les autres réponses contiennent beaucoup de texte et de code inutiles. Voici deux façons d'obtenir le dernier caractère d'une chaîne:

carboniser

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

Chaîne

String lastChar = myString.substring(myString.length() - 1);
Suragch
la source
32

Les autres réponses sont très complètes et vous devriez certainement les utiliser si vous essayez de trouver le dernier caractère d'une chaîne. Mais si vous essayez simplement d'utiliser un conditionnel (par exemple, le dernier caractère «g»), vous pouvez également faire ce qui suit:

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

ou, chaînes

if (str.endsWith("bar")) {
Neil Chowdhury
la source
Très utile et pertinent.
Aquarelle
4

Essaye ça:

if (s.charAt(0) == s.charAt(s.length() - 1))
Bala R
la source
Cette réponse est fausse. Il vérifie uniquement si les premier et dernier caractères sont identiques.
Aquarelle
2

La solution simple est:

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

Utilisation d'un tableau de caractères (attention au vilain argument String vide ou String nul!)

Une autre solution utilise StringBuilder (qui est généralement utilisé pour faire la manupilation de String puisque String lui-même est immuable.

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

Encore une autre approche (plus pour l'instruction que pour l'utilisation réelle) est celle-ci:

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

Ici, la chaîne complète est inversée, puis la partie qui ne doit pas être inversée est remplacée par la sous-chaîne. ;)

Yoko Zunna
la source
2
public String lastChars(String a) {
if(a.length()>=1{
String str1 =a.substring(b.length()-1);
}
return str1;
}
Abdul Hanan Khan
la source
Je ne pense pas que ce code se compilera (ne nécessite que de petites corrections), une fois que vous l'avez compilé, testez-le sur une chaîne vide pour voir si cela fonctionne.
Knells le
2
Bien que cette réponse soit probablement correcte et utile, il est préférable que vous y incluiez des explications pour expliquer comment elle aide à résoudre le problème. Cela devient particulièrement utile à l'avenir, s'il y a un changement (peut-être sans rapport) qui l'empêche de fonctionner et que les utilisateurs doivent comprendre comment cela fonctionnait autrefois. Merci!
Hatchet
2
public char LastChar(String a){
    return a.charAt(a.length() - 1);
}
vijay pandey
la source
2
String aString = "This will return the letter t";
System.out.println(aString.charAt(aString.length() - 1));

La sortie doit être:

t

Bon codage!


la source
1
C'est exactement le même exemple donné ici stackoverflow.com/a/13025371/773479
John Veldboom
2

Voici une méthode que j'utilise pour obtenir le dernier xx d'une chaîne:

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

Ensuite, utilisez-le comme ceci:

String testStr = "this is a test string";
String last1 = takeLast(testStr, 1); //Output: g
String last4 = takeLast(testStr, 4); //Output: ring
Pierre
la source
1
 public char lastChar(String s) {
     if (s == "" || s == null)
        return ' ';
    char lc = s.charAt(s.length() - 1);
    return lc;
}
rakib
la source