2015-04-01 5 views
-8

Это строка я получил:Заменить точную строку Java

http://sdsadasd/time/time.jsp?tp=&a 

Теперь я хочу, чтобы заменить второй time.jsp с java.jsp но не первого «время»?

Как я могу это достичь? Я уже пробовал это, но это не помогло:

replaceAll("\\btime.jsp"", "java.jsp"); 

Спасибо.

+2

_did not work_ довольно бесполезен. Как он себя ведет? Что вы ожидали от этого? Почему вы ожидали этого? –

+1

Ваши работы 'replaceAll' (я думаю, ваш оригинал без двойника"). Примечание. 'ReplaceAll' не изменяет вашу строку, а возвращает новую. – tomse

+0

'replaceAll' использует синтаксис regex. Если вы заинтересованы в замене литералов, используйте 'replace'. Также помните, что Строки неизменяемы, поэтому вы не можете их изменить, поэтому 'replace' возвращает новую, измененную строку, которую вам нужно сохранить. – Pshemo

ответ

1

Вы можете использовать:

String result = "http://sdsadasd/time/time.jsp?tp=&a".replaceFirst("time\\.jsp", "java.jsp"); 

Или используя хороший друг ApacheCommon StringUtils ...

String result = StringUtils.replaceOnce("http://sdsadasd/time/time.jsp?tp=&a", "time.jsp", "java.jsp"); 

Например, вы можете сделать:

public static void main(String[] args) { 
    String result = "http://sdsadasd/time/time.jsp?tp=&a".replaceFirst("time\\.jsp", "java.jsp"); 
    System.out.println(result); 
} 

// Print: 
http://sdsadasd/time/java.jsp?tp=&a 
+0

'StringUtils' не является классом из стандартной библиотеки Java. Из какой библиотеки этот класс? – Jesper

+0

RE StringUtils: Только если у вас есть Apache commons lang on classpath – copeg

+0

@copeg спасибо .. забыли упомянуть об этом. Исправлено: –

1

Попробуйте это:

replaceAll("time.jsp", "java.jsp"); 
0

Если я правильно понял ваш вопрос, вы хотите заменить только второй случайностью «time.jsp».

Try the following: 

    boolean replace = false; 
    int index = myString.indexOf("time.jsp"); 
    while(index != -1) { 
     String substr = myString.substring(index); 
     if(replace) { 
      //do your replacement 
     } 
     index = myString.indexOf("time.jsp", index + 1); 
    } 

Я не скомпилировал это, но это общее решение, которое вы можете использовать!