J'essaye de convertir la chaîne suivante 1.00 h. en 1.00 avec RegEx mais je suis nouveau avec elle et j'ai besoin de votre aide. J'ai essayé ce qui suit
seanceLengthValue = Integer.parseInt(
currentService.getSeanceLength().replaceAll("\\D\\w+",""));
4 Réponses :
Il suffit de faire correspondre / conserver / capturer les premiers caractères non blancs et d'ancrer l'expression au début:
^(\S+)
Voir une démo sur regex101.com (en Java vous devez échapper les barres obliques inverses pour qu'il devienne ^ (\\ S +) effectivement).
Essayez ce modèle: (\d*\.\d+|\d+)
Il utilise l'alternance pour vous permettre de faire correspondre différents types de formats de nombres décimaux:
\ d * \. \ d + correspondra à zéro ou plusieurs chiffres \ d , point littéralement \. puis un ou plusieurs chiffres \ d + , donc il correspondra à 1.0, .01, etc.
\ d + - correspond à un ou plusieurs chiffres, au cas où il y aurait un séparateur décimal.
Vous pouvez simplement utiliser:
seanceLengthValue = Double.parseDouble(
currentService.getSeanceLength().replaceAll(" [a-zA-Z]", "");
Ici, nous remplaçons toutes les occurrences d'alphabets et d'espaces par "" . De plus, comme la chaîne résultante sera un double , vous devez utiliser Double.parseDouble () pour la conversion.
Voici comment vous pouvez le faire
seanceLengthValue = Float.parseFloat(m.group(0));
Cela vous donnerait tout ce qui est avant les espaces.
Maintenant, lorsque vous analysez, il doit être analysé dans float ou double parce qu'il a une valeur en virgule flottante.
String str = "1.00 h";
Pattern p = Pattern.compile("^(\\S+)");
Matcher m = p.matcher(str);
m.find();
Log.i("Findings", "value is >>" + m.group(0) + "<<");
Remarque: En cas d'espaces multiples, il donnerait toujours la première occurrence uniquement.
par exemple; Si la chaîne est "1,00 h 2,00 f"; cela donnerait "1,00" seulement.
convertir la chaîne suivante "1,00 h". à 1.00 avec RegEx -> Même si vous obtenez 1.00, cela ne fonctionnera toujours pas. Impossible d'analyser
1.00en int.@Evgeny Ladyzhenskiy: Une réponse a-t-elle fonctionné pour vous? Si oui, envisagez de les accepter / de les voter. Que dois-je faire lorsque quelqu'un répond à ma question?