web-dev-qa-db-fra.com

Étant donné une chaîne en Java, il suffit de prendre les premières lettres X

Existe-t-il quelque chose comme une sous-chaîne C # pour Java? Je crée une application mobile pour Blackberry et, en raison de contraintes d'écran, je ne peux me permettre de montrer 13 lettres plus trois points pour un Ellipsis. 

Toute suggestion sur la façon d'accomplir cela?

J'ai besoin de Java nue et non d'une astuce car je doute qu'un appareil mobile ait accès à une infrastructure complète. Au moins dans mon expérience de travail avec Java ME il y a un an.

26
delete

Vous pouvez faire exactement ce que vous voulez avec String.substring().

String str = "please truncate me after 13 characters!";
if (str.length() > 16)
    str = str.substring(0, 13) + "..."
51
jjnguy
String foo = someString.substring(0, Math.min(13, someString.length()));

Edit: Juste pour référence générale, à partir de Guava 16.0, vous pouvez faire:

String truncated = Ascii.truncate(string, 16, "...");

tronquer à une longueur maximale de 16 caractères avec un Ellipsis.

De côté

Notez, cependant, que tronquer une chaîne pour l'affichage par caractère n'est pas un bon système pour quoi que i18n doive être pris en compte. Il y a (au moins) quelques problèmes différents:

  1. Vous voudrez peut-être prendre en compte les limites de Word et/ou les espaces pour éviter de les tronquer à un endroit peu pratique.
  2. Fractionner des paires de substitution (bien que cela puisse être évité simplement en vérifiant si le caractère que vous souhaitez tronquer est le premier d'une paire de substitution).
  3. Fractionnement d'un caractère et d'un caractère de combinaison qui le suit (par exemple, une e suivie d'un caractère de combinaison qui met l'accent sur cette e.)
  4. L'apparence d'un caractère peut varier en fonction du caractère qui le suit dans certaines langues. Par conséquent, le simple fait de tronquer ce caractère produira un résultat qui ne ressemble même pas à l'original.

Pour ces raisons (et d'autres), j'ai cru comprendre que la meilleure pratique de troncature pour l'affichage dans une interface utilisateur consiste à supprimer le rendu du texte au bon endroit à l'écran plutôt que de tronquer la chaîne sous-jacente.

36
ColinD
String str = "This is Mobile application."
System.out.println(str.subSequence(0, 13)+"...");
0
user2161578