2014-01-28 5 views
0

Я заменяю символ в строке. Должен быть лучший способ сделать это, не так ли?Замена символа в строке

public static String eqEq(String stringIn) { 


    char[] stringArray; 

    stringArray = stringIn.toCharArray(); 

    for (int i = 0; i < stringIn.length(); i++){ 

     if(stringArray[i] == '='){ 

      stringArray[i] = '?'; 
     } 

     } 

    String sReturn = new String(stringArray); 
    return sReturn; 
} 
+3

Проверьте 'StringBuilder'. –

+0

['stringIn.replaceAll (" = ","? ");'] (Http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll%28java.lang .String,% 20java.lang.String% 29)? –

+1

String.replace/replaceAll? –

ответ

4

Что-то не так с replace()?

public static String eqEq(String stringIn) { 
    return stringIn.replace('=', '?'); 
} 

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

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

+0

@MadProgrammer 'replace()' имеет две версии: [один для символов] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace (char,% 20char)), [другой для строк] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace (java.lang.CharSequence,% 20java.lang.CharSequence) (на самом деле CharSequences). Я предполагаю, что в этом случае мы должны использовать версию char. Done. – Bohemian

+0

Извините, мой плохой: P Не забудьте забыть о 'CharSequence' – MadProgrammer

2

Вы можете попробовать String#replace, например

stringIn = stringIn.replace('=', '?'); 

Вы можете даже использовать String#repalceAll, если вы хотите использовать регулярное выражение вместо этого.

Можно даже использовать StringBuilder

StringBuilder sb = new StringBuilder(value); 
int index = -1; 
while ((index = sb.indexOf("=")) != -1) { 
    sb.replace(index, index + 1, "?"); 
} 

Выбор за вами

1

Вы можете использовать replace или replaceAll методы класса строкового следующим образом:

public static String eqEq(String stringIn) { 
    stringIn.replace("=", "?"); 
} 

ИЛИ

public static String eqEq(String stringIn) { 
    stringIn.replaceAll("=", "?"); 
} 

Просмотрите live example этого кода, выполняемого (используя replaceAll) в строке примера.

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