Formattazione di stringhe + Blackberry + java

Sto affrontando un piccolo problema con la formattazione della stringa. Nella mia domanda ho bisogno di inviare una mail a un servizio web. Il formato della mail deve essere così

Name Class Section Position Sam 5 A 1 Joseph 7 C 4 

Per questo ho usato / n e / t per le interruzioni di riga e la spaziatura. Ma il vero problema è con l’elemento ‘Nome’. La lunghezza dell’elemento “nome” varia. Attualmente il mio approccio è che sto prendendo una stringa di riferimento sufficientemente lunga e riempendo spazi vuoti in ciascuna stringa di nome finché la sua lunghezza non è uguale alla stringa di base.

Il problema che sto affrontando è che questo approccio non funziona bene quando aggiungo spazi vuoti ma invece di spazi vuoti se aggiungo qualsiasi altro carattere dica ‘x’, quindi la stringa risultante è formattata correttamente.

Funzione per l’aggiunta di spazi vuoti:

  private String getModifiedName(String name){ String testString = "This is a very big string"; while(getFont().getAdvance(testString) > getFont().getAdvance(name)){ name = name + " "; } return name; } 

Prova a utilizzare String.format() se è presente nella versione di jdk che stai usando con blackberry

 package org.life.java.so.questions; /** * * @author Jigar */ public class StringFormatDemo { public static void main(String[] args) { String name = "Jigar"; String header = String.format("Name \t Class \t Section \t Positoin"); String dataRow1 = String.format("%s \t %s \t %s \t %s",name,"A","IT","JavaDev"); System.out.println(header); System.out.println(dataRow1); } } 
  • Demo di IdeOne

Aggiornare:

Poiché il metodo sopra non è presente con java env, puoi farlo

javax.microedition.global.Formatter.formatMessage(...)

Mi sembra che tu provi a creare un corpo email che sembra ben allineato in un visualizzatore. E immagino, stai usando un font proporzionale (come times o helvetica / arial).

I servizi Web di solito non si preoccupano se la tabella sembra allineata, ma si preoccupa se il messaggio è allineato. Assicurati che il numero di caratteri sia uguale a ogni colonna, anche se il risultato appare brutto sullo schermo. Quindi, in realtà non dovrebbe usare il getFont().getAdvance() per creare stringhe (quasi) di dimensioni uguali ma usare String#size() invece per il riempimento.