2015-11-15 7 views
0

Я пытаюсь создать метод, который заменяет все экземпляры определенного символа словом новым символом. Это то, что я до сих пор:Заменить все экземпляры символа в строке

public class practice { 
public static void main(String[] args) { 

    String test3 = updatePartialword("----", "test", 't'); 
    System.out.println(test3); } 


public static String updatePartialword(String partial, String secret, char c) { 
    String newPartial = ""; 
    int len = secret.length(); 
    for (int i=0; i<=secret.length()-1; i++){ 
     char x = secret.charAt(i); 
     if (c==x) { 
      String first = partial.substring(0,i); 
      String second = partial.substring(i+1,len); 
      newPartial = first+x+second; 
     } 


    } 
     return newPartial; 
} 

} 

Я хочу, чтобы вернуться т - т, но он будет печатать только последний т. Любая помощь будет принята с благодарностью!

ответ

2

Java уже имеет встроенный метод в String для этого. Вы можете использовать метод replace(), чтобы заменить все вхождения заданного символа в строке с другим персонажем

String str = "Hello"; 
    str.replace('l', '-'); //Returns He--o 
    str.replace('H', '-'); //Returns -ello 
+0

Почему 'replaceAll'? Вам нужен синтаксис regex здесь? Если вместо этого не использовать 'replace' (он также заменяет все вхождения). – Pshemo

+0

@Pshemo Ой, мой плохой. Хаха забыл об этом. – kmecpp

0

Я подозреваю, что вы ищете что-то вроде

public static void main(String[] args) { 
    String test3 = updatePartialword("----", "test", 't'); 
    System.out.println(test3); 
} 

public static String updatePartialword(String partial, String secret, char c) { 
    char[] tmp = partial.toCharArray(); 

    for (int i = 0; i < secret.length(); i++) { 
     char x = secret.charAt(i); 
     if (c == x) { 
      tmp[i] = c; 
     } 

    } 
    return new String(tmp); 
} 
0

В своем коде вы перезаписать Строка каждый раз, когда вы нашли символ. Вместо перезаписи вы должны каждый раз расширять строку.

public class practice { 
    public static void main(String[] args) { 
    String test3 = updatePartialword("----", "test", 't'); 
    System.out.println(test3); 
} 

public static String updatePartialword(String partial, String secret, char c) { 
    StringBuilder sb = new Stringbuilder(); 
    sb.append(""); // to prevent the Stringbuilder from calculating with the chars 
    for (int i = 0; i < partial.lenght; i++) 
     if (secret.charAt(i) == c) 
     sb.append(c); 
     else 
     sb.append('-'); 
    return sb.toString(); 
    } 

} 
Смежные вопросы