2016-04-08 103 views
0

我的應用程序中有以下促銷字符串。只替換字符串中的第二個出現

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。

什麼是最好的方法來取代LINK第二次發生的「youtube」?

+0

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

+0

如果它總是'youtube.'你可以尋找點。如果它是第二個'youtube',則可以使用積極的後視:'(?<= youtube。{0,999})youtube'(或者如果您不想在外觀後面添加最大長度的文本使用'(?<= 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。 ASAS的YouTube

相關問題