2017-03-21 3 views
-2

J'ai un String with FirstName + "/" + LastName +" "+ DateOfBirthdayExpression régulière Nom et prénom avec un espace ou un tiret

  1. FirstName et LastName peut contenir de l'espace (" ") et DASH (" -")
  2. DateOfBirthday ne peut en format ([0-9]{2}+[A-Za-z]+[0-9]{2}) et dans peut être avant ou à la fin de la chaîne.

S'il vous plaît, aidez-moi à enlever DASH et SPACE dans FirstName et LastName

Exemples:

- Hanry Klark/Jacobson 23FEB16 - HanryKlark/Jacobson 23FEB16 
- Hanry-Klark/Jaco-Bson 23FEB16 - HanryKlark/JacoBson 23FEB16 
- Hanry/Jaco 23FEB16 - Hanry/Jaco 23FEB16 
- 23FEB16 Hanry-Klark/Jaco Bson - 23FEB16 HanryKlark/JacoBson 

J'ai essayé, mais ...

String additionalInfo = "23FEB16 Hanry-Klark/Jaco Bson"; 
String datePattren = "[0-9]{1,}+[A-Za-z]+[0-9]{1,}"; 
Pattern pattern = Pattern.compile(datePattren); 
Matcher matcher = pattern.matcher(additionalInfo); 
matcher.find(); 
String Date = matcher.group(); 

additionalInfo = additionalInfo.replaceAll(datePattren, "").replaceAll(" ", "").replaceAll("-",""); 
if (Date!=""){ 
    additionalInfo = additionalInfo + " " + Date; 
} 

Meybe il y a un plus belle solution?

+1

donner une entrée de l'échantillon, ainsi que la sortie jusqu'à présent prévu –

+1

votre code et le problème spécifique avec ce serait aussi bien. Avez-vous essayé quelque chose? En réponse à votre question, vous venez de nous soumettre des exigences et il semble que vous demandiez simplement de le faire pour vous. – tnw

+0

try 'additionalInfo.replaceAll (" ([a-zA-Z] +) (?: \\ s | -) ([a-zA-Z] +) "," $ 1 $ 2 ")' –

Répondre

1

Vous pouvez utiliser ([a-zA-Z]+)(?:\\s|-)([a-zA-Z]+) avec replaceAll

([a-zA-Z]+): capturer un ou plusieurs alphabets, représentés par $1

(?:\\s|-): groupe non-capture pour correspondre espace ou - caractère

([a-zA-Z]+): capturer un alphabets ou plus, représentés par $2

Il faut donc utiliser: additionalInfo.replaceAll("([a-zA-Z]+)(?:\\s|-)([a-zA-Z]+)", "$1$2")

Démo

const aar =['Hanry Klark/Jacobson 23FEB16','Hanry-Klark/Jaco-Bson 23FEB16', 
 
     'Hanry/Jaco 23FEB16','23FEB16 Hanry-Klark/Jaco Bson'] 
 

 
const regex =/([a-zA-Z]+)(?:\s|-)([a-zA-Z]+)/g; 
 

 
for(var i in aar) 
 
    console.log(aar[i].replace(regex,'$1$2'));

+1

greate !!! Merci. –