2014-09-14 8 views
0

Je voudrais remplacer la partie du texte dans une chaîneRechercher et remplacer un mot dans une chaîne Scala

Exemple:

De

s3://provider/subject/foo=table/bar=NA/date=20140914 

à

s3://provider/subject/foo=table/bar=NA/date=2014 

Votre aide est grandement appréciée. Merci

+0

'Je voudrais remplacer la partie du texte par une chaîne', quelle partie du texte et avec quoi? –

+0

La date exacte doit être remplacée de AAAAMMJJ à AAAA. Reste une partie de la chaîne ne devrait pas changer –

+0

vous voulez dire ce http://regex101.com/r/cN7qZ7/4? –

Répondre

0

Regex:

(=\d{4})\S* 

(=\d{4}) serait capturer les quatre premiers chiffres ainsi que le premier symbole =. \S* correspond à zéro ou plusieurs caractères non-espace.

chaîne de remplacement:

$1 

Remplacement des caractères correspondants avec les caractères qui sont présents à l'intérieur du premier groupe vous donnera la sortie désirée.

DEMO

0

Une solution simple.

Recherche: (date=\d{4})\d{4}
Remplacer: \1

0

Scala:

val s = "s3://provider/subject/foo=table/bar=NA/date=20140914" 
s.replaceAll("""(date=\d{4})\d{4}""", "$1") 
//res0: String = s3://provider/subject/foo=table/bar=NA/date=2014 

Ou, je suppose que si le format est compatible:

s.dropRight(4) 
//res1: String = s3://provider/subject/foo=table/bar=NA/date=2014 
0

Pour

val s = "s3://provider/subject/foo=table/bar=NA/date=20140914" 

extraire le champ de date,

val pattern = """(.*)date=(\w+)""".r 
val pattern(_, date) = s 
date: String = 20140914 

puis remplacer (formater) par exemple comme celui-ci,

s.replace(date, date.take(4)) 
res: s3://provider/subject/foo=table/bar=NA/date=2014 
2

Si vous avez toujours besoin de sauter derniers chiffres de la date à la chaîne que vous avez fourni, vous pouvez simplement utiliser:

"s3://provider/subject/foo=table/bar=NA/date=20140914".dropRight(4) 
Questions connexes