2010-12-20 3 views
1

Ecrit une fonction Java telle que Étant donné deux chaînes, un mot et un séparateur, renvoie une grande chaîne composée d'occurrences de comptage du mot, séparées par la chaîne de séparateur.String Pattern Question - Core Java (repeatSeparator)

repeatSeparator("Word", "X", 3) → "WordXWordXWord"   
repeatSeparator("This", "And", 2) → "ThisAndThis"   
repeatSeparator("This", "And", 1) → "This"   

Mon code est comme ci-dessous, mais ne fonctionne pas

public String repeatSeparator(String word, String sep, int count) {   
    if(count == 1) {  
     return word;   
    }  
    if(count > 1) {  
     for (int i = 0; i < count-1; i++){   
      word = word + sep + word;   
     }  
    }    
    return word;       
} 

Résultat ::

        Expected   Run     Result   
repeatSeparator("Word", "X", 3) → "WordXWordXWord" "WordXWordXWordXWord" X  
+1

Et votre question est ...? – Yuval

+0

Merci à tous pour vos contributions – Deepak

Répondre

2

La fonction ci-dessous devrait faire ce que vous avez besoin:

public String repeatSeparator(String word, String sep, int count) {  
    StringBuffer buffer = new StringBuffer(); 

    while (count > 0) { 
     buffer.append(word); 
     count--; 
     if (count > 0) { 
      buffer.append(sep); 
     } 
    } 

    return buffer.toString();       
} 
1
public string doStuff(
    final String word, 
    final String seperator, 
    final int count) 
{ 
    StringBuffer buffer = new StringBuffer(); 
    for (int index = 0; index < count; ++index) 
    { 
     if (buffer.length() > 0) 
     { 
      buffer.append(seperator); 
     } 

     buffer.append(word); 
    } 

    return buffer.toString(); 
} 
+0

Note: les devoirs n'étaient pas marqués lorsque je répondais. – DwB

+0

Toutes sont des réponses acceptéesMerci dwb – Deepak

3

mot = mot + mot + mot;

Réfléchissez bien à ce que cela fait la deuxième fois. Astuce: word a changé depuis la première fois.

Solution: Utilisez une variable différente pour conserver les résultats, de sorte que vous les ajoutiez word à chaque fois. (Indice libre: utiliser un StringBuffer ou StringBuilder à la place.)

+0

+1: C'est exactement ce dont les questions de devoirs ont besoin. –

1
public String repeatSeparator(String word, String sep, int count) {   
    StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < count; i++) { 
    sb.append(word); 
    if (i < count - 1) 
     sb.append(sep); 
    } 
    return sb.toString(); 
} 

Dans la vraie vie, utiliserait Apache Common LangStringUtils.repeat

0

Ne pas obtenir de considérer aussi les cas de pointe. Si le compte est zéro alors le programme devrait retourner une chaîne vide.

0
public String repeatSeparator(String word, String sep, int count) { 
    String ans =""; 
    for(int i=0;i<count;i++) 
    { 
    if(i<count-1) 
    { 
     ans+=word + sep; 
    } else { 
     ans+=word; 
    } 
    } 
    return ans; 
} 
+0

Bienvenue sur Stack Overflow! Veuillez essayer de fournir une explication pour le code que vous avez posté ici. –

0
public String repeatSeparator(String word, String sep, int count) { 
    String s = ""; 

    if (count > 1) 
    { 
     while (count > 0) 
     { 
      if (count > 1) 
      { 
       s = s + word + sep; 
       count--; 
      } 


      if (count == 1) 
      { 
       s = s + word; 
       count--; 
      } 
     } 
    } 

    if (count == 1) s = word; 

    return s; 

} 
0
public static String repeatSeparator1(String word,String sep,int count){ 
    StringBuilder sb = new StringBuilder(); 
    for(int i=0;i<count;i++){ 
     sb.append(word+sep); 
    } 
    return sb.substring(0, sb.lastIndexOf(sep)); 
} 
0

utilisé ceci:

public String repeatSeparator(String word, String sep, int count) { 

    String result = ""; 

    if(count == 0) 
    return ""; 


    for(int i = 0 ; i < count-1 ; i++){ 
    result = result +(word+sep); 
    } 

    return result+word; 
} 
0
public String createSeparatorString(String word, String separator, int count) {  
    StringBuffer stringBuffer = new StringBuffer(); 

    while (count > 0) { 
     stringBuffer.append(word); 
     count--; 
     if (count > 0) { 
      stringBuffer.append(separator); 
     } 
    } 

    return stringBuffer.toString();       
} 
0

Voici une autre approche similaire (j'ajouter le mot à la fin de chaque chaîne si le nombre est supérieur à 0):

public String repeatSeparator(String word, String sep, int count) { 
    String out=""; 
    if(count>0){ 
    for(int i=1; i<=count-1; i++){ 
     out += word+sep; 
    } 
    return out+word; 
    } 
    else return out; 
}