2016-04-08 2 views
0

У меня есть следующая поддержка String в моем приложении.Заменить только 2-е место в строке

String promotion = "Watch on youtube: Mickey en de stomende drol! Watch on youtube."; 

Я хочу заменить второе слово «Youtube» гиперссылкой, поэтому я попытался:

promotion = promotion.replace("youtube","https://www.youtube.com/watch?v=a3leCIk2eyQ"); 

Но это заменяет первое YouTube, и я хочу второй YouTube заменить.

Я также попытался:

promotion = promotion.replaceAll("youtube","https://www.youtube.com/watch?v=a3leCIk2eyQ"); 

Но это заменяет оба YouTubes.

Каков наилучший подход для замены второго события «youtube» на linK?

+0

http://stackoverflow.com/questions/3976616/how-to-find-nth-occurrence-of-character-in-a-string –

+0

Если это всегда 'youtube.' вы могли бы найти точка. Если это второй «youtube», вы можете использовать положительный внешний вид: '(? <= Youtube. {0,999}) youtube' (или если вы не хотите добавлять максимальную длину текста в look-behind используйте '(? <= youtube) (. *?) youtube' и повторно добавьте группу в замещение, используя обратную ссылку' $ 1'.) – Thomas

ответ

3

Поскольку ваша вторая строка "youtube" также является последней, вы можете найти последнюю и заменить ее.

public static void main(String[] args) { 
     String promotion = "Watch on youtube: Mickey en de stomende drol! Watch on youtube."; 
     System.out.println(promotion.replaceAll("(.*)(\\byoutube\\b)(.*)", "$1"+ "https://www.youtube.com/watch?v=a3leCIk2eyQ" + "$3")); 
    } 

O/P:

Смотреть на YouTube: Микки ан-де-stomende drol! Смотреть на https://www.youtube.com/watch?v=a3leCIk2eyQ.

Если вы хотите заменить только в случае, если второй youtube у вас есть несколько youtube сек в строке, вы можете использовать:

public static void main(String[] args) { 
    String promotion = "Watch on youtube: Mickey en de stomende drol! Watch on youtube. asas youtube"; 
    String stringToReplace = "https://www.youtube.com/watch?v=a3leCIk2eyQ"; 
    System.out.println(promotion.replaceAll("(.*?\\byoutube\\b.*?)(\\byoutube\\b)(.*)", "$1"+ stringToReplace + "$3")); 
} 

O/P:

Смотреть на YouTube : Mickey en de stomende drol! Смотреть на https://www.youtube.com/watch?v=a3leCIk2eyQ. АСАС YouTube

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