OVH Cloud OVH Cloud

Formatage de chaîne de caractère

4 réponses
Avatar
Bernard Koninckx
Bonjour à tous,

Voici une simple question de newbie.
Comment puis je formater une chaîne de caractère avec le format suivant :
X-XXXX-XXXX-X ?
X est un alphanumérique ?
- est le séparateur ?

Merci à tous.

P.S. : Et si il s'agissait de formater les X sous forme de numérique, que
deviendrait l'expression ?

4 réponses

Avatar
oliv
Bernard Koninckx wrote:
Voici une simple question de newbie.
Comment puis je formater une chaîne de caractère avec le format suivant :
X-XXXX-XXXX-X ?
X est un alphanumérique ?
- est le séparateur ?

P.S. : Et si il s'agissait de formater les X sous forme de numérique, que
deviendrait l'expression ?


Regarde
java.text.MessageFormat
ou alors sinon, un des packages émulant printf et trouvable par Google.

--
oliv

Avatar
Bernard Koninckx
Hello,

J'ai regardé la description et examples de la classe java.text.MessageText
mais je n'y comprends rien.
Aurais-tu un morceau de code pour illustrer son utilisation ?

Merci

Bernard



"oliv" a écrit dans le message de news:
40166108$0$28701$
Bernard Koninckx wrote:
Voici une simple question de newbie.
Comment puis je formater une chaîne de caractère avec le format suivant
:


X-XXXX-XXXX-X ?
X est un alphanumérique ?
- est le séparateur ?

P.S. : Et si il s'agissait de formater les X sous forme de numérique,
que


deviendrait l'expression ?


Regarde
java.text.MessageFormat
ou alors sinon, un des packages émulant printf et trouvable par Google.

--
oliv



Avatar
oliv
Suivant les bonnes pratiques en vigueur je réponds avant en citant
l'intégralité des messages précédents...

Si tu ne veux pas utiliser une classe prédéfinie, tu peux mimer un
genre de formattage par qqch comme :

public class Affich {

public static void main(String[] args) {
for (int i=0 ; i<args.length ; i++)
System.out.println(format("X-XXXX-XXXX-X", args[i]));
}

// Q&D sans verification ni traitement d'erreur
private static String format(String fmt, String str) {
StringBuffer buff = new StringBuffer();
int j = 0;

for (int i=0 ; i<fmt.length() ; i++)
if (fmt.charAt(i) == 'X')
buff.append(str.charAt(j++));
else if (fmt.charAt(i) == '-')
buff.append('-');
// else if ou switch ...

return new String(buff);
}
}

--
oliv

Bernard Koninckx wrote:

Hello,

J'ai regardé la description et examples de la classe java.text.MessageText
mais je n'y comprends rien.
Aurais-tu un morceau de code pour illustrer son utilisation ?

Merci

Bernard



"oliv" a écrit dans le message de news:
40166108$0$28701$

Bernard Koninckx wrote:

Voici une simple question de newbie.
Comment puis je formater une chaîne de caractère avec le format suivant



:

X-XXXX-XXXX-X ?
X est un alphanumérique ?
- est le séparateur ?

P.S. : Et si il s'agissait de formater les X sous forme de numérique,



que

deviendrait l'expression ?


Regarde
java.text.MessageFormat
ou alors sinon, un des packages émulant printf et trouvable par Google.

--
oliv








Avatar
Real Gagnon
J'ai regardé la description et examples de la classe
java.text.MessageText mais je n'y comprends rien.
Aurais-tu un morceau de code pour illustrer son utilisation ?


Actuellement, comme c'est du alphanumerique,
javax.swing.text.MaskFormatter est peut-etre plus appropriee .

public class TestMF {
public static String value = "A1234B567Z";
public static String mask = "A-AAAA-AAAA-A";

public static void main(String args[]) throws Exception{
System.out.println(formatString(value,mask));
}

public static String formatString(String string, String mask) {
try {
javax.swing.text.MaskFormatter mf = new
javax.swing.text.MaskFormatter(mask);
mf.setValueContainsLiteralCharacters(false);
return mf.valueToString(string);
}
catch (Exception e) {
return string;
}
}

}

Bye.
--
Real Gagnon from Quebec, Canada
* Looking for Java or PB snippets ? Visit Real's How-to
* http://www.rgagnon.com/howto.html