2017-10-04 1 views
0

J'ai essayé plusieurs variantes de différentes solutions expliquées iciEn utilisant Java Regex, comment ajouter un espace avant et après une parenthèse?

How to add space on both sides of a string in Java

Regex add space between all punctuation

Add space after capital letter

Ainsi que d'autres les concernant entre parenthèses (et beaucoup d'autres)

Regex to match parenthesis

J'ai une chaîne et je veux simplement ceci: salut()

Pour devenir ceci: salut()

Ce que j'ai essayé jusqu'à présent:

if (phrase.matches("^.*[(].*$")){ 
      phrase.replaceAll("\\(", " \\("); 
     } 

if fonctionne très bien mais le replaceAll ne fait rien.

Je lis en ligne que je pourrais avoir besoin de mettre les valeurs précédentes dans le replaceAll donc j'ai essayé la

suivante
if (phrase.matches("^.*[(].*$")){ 
    phrase.replaceAll("(.*)\\(", " \\("); 
} 

Outre cette

if (phrase.matches("^.*[(].*$")){ 
    phrase.replaceAll("(.*)\\(", "(.*) \\("); 
} 

Et ce

if (phrase.matches("^.*[(].*$")){ 
     phrase.replaceAll("(.*)\\((.*)", "(.*) \\((.*)"); 
    } 

À ce stade, je sens que j'essaie juste des trucs au hasard et il me manque quelque chose de trivial ici.

+0

[Voir ceci] (https://regex101.com/r/TSv6V1/2). Regex: '\ ('; Replace '(' – ctwheels

+0

Seul le backslash ne fonctionne pas en Java L'équivalent est \\ ou \ 'ou \ "et je les ai tous essayés – Maude

+0

Depuis le lien ci-dessus, si vous allez dans le générateur de code section et sélectionnez java, vous obtiendrez cette page: https://regex101.com/r/TSv6V1/2/codegen?language=java Ce que j'ai posté ci-dessus dans le commentaire est la pure regex.Vous devez échapper aux caractères en Java par la suite (comme le montre le lien dans ce commentaire) – ctwheels

Répondre

1

RemplacerAll ne mute pas la chaîne. Essayez

if (phrase.matches("^.*[(].*$")){ 
    System.out.println(phrase.replaceAll("\\(", " \\(")); 
    // => f () 
} 

ou

if (phrase.matches("^.*[(].*$")){ 
    phrase = phrase.replaceAll("\\(", " \\(")); 
} 
0

En Java, les chaînes sont immuables. Vous pouvez donc affecter le résultat replaceAll à une variable.

phrase = phrase.replaceAll("\\(", " (");

également votre si la condition peut être omis, provoquer la replaceAll remplacera les chaînes, que si elle trouve une correspondance.