OVH Cloud OVH Cloud

regex

2 réponses
Avatar
Pierre Maurette
Bonjour,

Je transforme une chaine de format SimpleDateFormat de type "HH'H'mm"
en un autre au format SimpleDateFormat de type "##'H##".
Pour être plus précis, ce qui est entre ' est préservé mais 'MOT' par
exemple devient 'M'O'T et en dehors des guillemets, seuls les
caractères parmi GyMwWDdFEaHkKhmsSzZ sont changés en #.
Je suis nul en regex, j'ai donc codé le bouzin comme ça:
<code>
Pattern regex = Pattern.compile("[GyMwWDdFEaHkKhmsSzZ]");
String[] test = formatString_.split("'");
boolean pair = true;
for (int i = 0; i < test.length; i++) {
if (pair) {
Matcher matcher = regex.matcher(test[i]);
maskString_ += matcher.replaceAll("#");
}
else {
for (int j = 0; j < test[i].length(); j++) {
maskString_ += "'" + test[i].substring(j, 1);
}
}
pair = !pair;
}
formatter = new MaskFormatter(maskString_);
</code>

Existe-t-il une solution plus directe, plus "regex" ?

Merci d'avance ...

--
Pierre Maurette

2 réponses

Avatar
TestMan
Bonjour,

Peux-tu donner d'autres exemples de tranformation (avant/après) que tu
recherches ?

A+

TM

Bonjour,

Je transforme une chaine de format SimpleDateFormat de type "HH'H'mm" en
un autre au format SimpleDateFormat de type "##'H##".
Pour être plus précis, ce qui est entre ' est préservé mais 'MOT' par
exemple devient 'M'O'T et en dehors des guillemets, seuls les caractères
parmi GyMwWDdFEaHkKhmsSzZ sont changés en #.
Je suis nul en regex, j'ai donc codé le bouzin comme ça:
<code>
Pattern regex = Pattern.compile("[GyMwWDdFEaHkKhmsSzZ]");
String[] test = formatString_.split("'");
boolean pair = true;
for (int i = 0; i < test.length; i++) {
if (pair) {
Matcher matcher = regex.matcher(test[i]);
maskString_ += matcher.replaceAll("#");
}
else {
for (int j = 0; j < test[i].length(); j++) {
maskString_ += "'" + test[i].substring(j, 1);
}
}
pair = !pair;
}
formatter = new MaskFormatter(maskString_);
</code>

Existe-t-il une solution plus directe, plus "regex" ?

Merci d'avance ...



Avatar
Pierre Maurette
Bonjour,

Peux-tu donner d'autres exemples de tranformation (avant/après) que tu
recherches ?


En fait, c'est surtout par curiosité. En plus ce que j'ai en entrée est
déjà formatté par ailleurs, je n'ai pas à me préoccuper par exemple
d'un nombre impair de '.
En revanche je n'ai peut-être pas été clair par rapport aux guillemets
d'extrémité " qui ne font pas partie de la chaîne.
Tout ce qui est entre 'ici' est transformé en 'i'c'i
Pour le reste, les caractères parmi GyMwWDdFEaHkKhmsSzZ sont
transformés en #, les autres ne sont pas modifiés.
HH'MAURETTE'mmmm'PIERRE' deviendra ##'M'A'U'R'E'T'T'E####'P'I'E'R'R'E

Je ne pense pas que le cas se produise, mais:
HH'MAURETTE'mCcm'PIERRE' deviendra ##'M'A'U'R'E'T'T'E#Cc#'P'I'E'R'R'E

Voilà ...

--
Pierre Maurette