2013-04-29 3 views
0

У меня есть строка «скорость, 7, красный, быстрый». Я хочу заменить 7 на строку «Семь». Как мне это сделать ?Как заменить один символ на индекс строкой?

Подробнее -

7 может быть заменена любой строкой, а не просто «Семь». Это также может быть «SevenIsHeaven». Я не хочу заменять все вхождения 7. Только 7 по указанному индексу, т. Е. Использовать индекс 7 для замены 7 некоторой строкой.

+0

У меня есть два вопроса здесь. a) Каков наилучший способ преобразования значения 'numeric' в его' alpha'? б) Как заменить эти значения? – Aquillo

+0

http://docs.oracle.com/javase/tutorial/java/data/manipstrings.html – TheDarkKnight

+2

Вы искали «заменить строку Java» в google? Вы будете поражены результатами. – Maroun

ответ

7
replaceAll("7", "Seven") //simple as that 

EDIT

Тогда вы должны искать для указанного индекса.

String input = "test 7 speed,7,red,fast yup 7 tr"; 
    int indexInteresdIn = 13; 
    if(input.charAt(indexInteresdIn) == '7'){ 
     StringBuilder builder = new StringBuilder(input); 
     builder.replace(indexInteresdIn, indexInteresdIn+1, "Seven"); 
     System.out.println(builder.toString()); 
    } 
+0

Мое первое предположение тоже, хотя я думаю, что OP хочет заменить все 'числовые'? – Aquillo

+0

@Aquillo - нет. Пожалуйста, см. Обновление –

+2

OP говорит, что он хочет заменить указанное появление 7, а не всех. – vikingsteve

2

Как насчет просто как внизу?

String str = "speed,7,red,fast"; 
str = str.replace("7", "Seven"); 

7 можно заменить любой строкой, а не просто "Семь". Это также может быть «SevenIsHeaven». Я не хочу заменять все вхождения 7. Только 7 по указанному индексу.

Или если вы хотите использовать регулярное выражение для замены первого числа на значимую строку.

String str = "speed,7,red,fast"; 
str = str.replaceFirst("\\d", "Seven"); 
+0

, который заменяет все вхождения. возможно replaceFirst() вместо replace()? – vikingsteve

+0

@vikingsteve проверить мое редактирование. :) – PermGenError

4

Поскольку String неизменен вы должны использовать StringBuilder для лучшей производительности.

http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

yourStringBuiler.replace(
        yourStringBuiler.indexOf(oldString), 
        yourStringBuiler.indexOf(oldString) + oldString.length(), 
        newString);` 

Если вы хотите, чтобы заменить весь String вроде String.replaceAll() ли можно создать собственную функцию, как это:

public static void replaceAll(StringBuilder builder, String from, String to) 
{ 
    int index = builder.indexOf(from); 
    while (index != -1) 
    { 
     builder.replace(index, index + from.length(), to); 
     index += to.length(); // Move to the end of the replacement 
     index = builder.indexOf(from, index); 
    } 
} 

Источник: Replace all occurrences of a String using StringBuilder?

Однако если вам не нужно это часто, и производительность не в том, что импорт Антон простой String.replaceAll() будет делать трюк тоже.

+0

Это заменяет символ только для символа. Что делать, если он хочет заменить персонажа более длинной строкой? – vikingsteve

+0

@vikingsteve Отредактировано –

0

Лучшим способом является сохранение самой строки в массиве, ее использование в пространстве.

String s[]; 
static int index; 
s = in.readLine().spilt(" "); 

Теперь сканируйте массив для указанного слова по указанному индексу и замените его на нужную строку.

for(int i =0;i<s.length; i++) 
{ 
if((s[i] == "7")&&(i==index)) 
{ 
    s[i]= "Seven"; 
} 
} 
Смежные вопросы