Je dois remplacer $achieved$
à partir d'une chaîne et il devrait être insensible à la casse. Parce que parfois dans la chaîne du serveur nous obtenons $ACHIeved$
, par conséquent, il devrait ignorer la casse. J'utilise le code ci-dessous. J'ai aussi essayé avec (?i)
mais cela ne fonctionne pas. Peut-il être fait avec regex, si oui, quelle devrait être l'expression régulière?Remplacer par ignorer la casse sensible
0
A
Répondre
0
Tout d'abord, replace
effectue le remplacement littéral de chaîne et n'accepte pas une expression régulière comme premier argument. Vous devez utiliser replaceFirst
ou replaceAll
. Ensuite, $
est un char regex spécial (il correspond à la fin de la chaîne), il doit donc être échappé. Vous pouvez utiliser Pattern.quote
pour cela. Ainsi, vous pouvez utiliser
stringWithoutFormating = stringWithoutFormating.replaceAll("(?i)" + Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved), String.valueOf(achieved).replace("$", "\\$"));
Ici, (?i)
fera le insensibles à la casse, Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved)
se tourneront $achieved$
en \$achieved\$
, puis le remplacement aura lieu. Le .replace("$", "\\$")
effectué sur le remplacement est nécessaire pour échapper littérale $
dans le remplacement.