2011-02-07 4 views
0

J'ai un fichier avec beaucoup de deux paires de chaînes, à savoir un fichier bilingue. Sur certaines entrées, les chaînes cibles ne contiennent pas le nombre d'espaces égal à src après ":"Faire correspondre les espaces dans deux chaînes

E.g.

src= Job %1$s: Bad record length at tape record number/block number: %2$s adddd: %3$s 
tgt= Travail %1$s : longueur d'enregistrement incorrecte dans le numéro d'enregistrement/de bloc :%2$s de la bande adddd: %3$s. 

J'ai besoin :%2$s être : %2$s

Des idées?

+0

Qu'est-ce que vous avez besoin pour faire? Pourriez-vous donner un exemple plus complet et complet? – aioobe

+0

@aioobe J'ai besoin de faire correspondre le nombre d'espaces dans src après un deux-points à la cible. Par exemple. si src a 3 espaces après le deuxième deux-points ":" la cible devrait avoir 3 espaces après le second deux-points – rojanu

Répondre

1

Cela devrait vous aider à démarrer:

import java.util.regex.*; 

public class Test { 

    public static void main(String[] args) { 

     String src = "abc : def"; // two spaces after colon. 
     String tgt = "ghi : jkl"; // three spaces after colon. 

     Pattern spaces = Pattern.compile("([^:]*:)(\\s*)(.*)"); 

     Matcher mSrc = spaces.matcher(src); 
     Matcher mTgt = spaces.matcher(tgt); 

     mSrc.matches(); 
     mTgt.matches(); 

     System.out.println("Spaces in src: " + mSrc.group(2).length()); 
     System.out.println("Spaces in tgt: " + mTgt.group(2).length()); 

     System.out.println("Target with src's number of spaces: " + 
          mTgt.group(1) + mSrc.group(2) + mTgt.group(3)); 
    } 
} 

Prints:

Spaces in src: 2 
Spaces in tgt: 3 
Target with src's number of spaces: ghi : jkl 
+0

Merci pour le code, cela a beaucoup aidé – rojanu

1

Essayez ceci: -

src = src.replaceAll(":%", ": %") 
+0

Ce dont j'ai besoin est de faire correspondre le nombre d'espace disponible pour src. par exemple si msg src a 3 espaces cible devrait avoir 3 espaces, si la source a 2 cible devrait avoir 2 – rojanu

Questions connexes