[英]String replace a url with part of the same url in javascript
我有一個包含隨機網址的字符串:
http://google.com/vocab/prefix#Billy
需要進行改造,使一切直到並且包括第一#
替換為最后的值/
和第一#
后跟一個:
。
結果將是:
prefix:Billy
更多示例:
http://some.url/a/path#elephant --> path:elephant
http://random.com/cool/black/beans/thing#Bob --> thing:bob
我了解如何捕獲前綴部分/([^\\/]+(?=#))/
,但由於無法弄清楚如何捕獲需要替換的部分,我一直在努力進行字符串替換。
myString.replace(/([^\/]+(?=#))/, '$1:')
我更願意在正則表達式中使用string.replace
使用replace
方法時,您需要匹配所有要替換的模式,而不僅僅是需要保留的部分; 這里有兩個選擇:
let s = 'http://google.com/vocab/prefix#Billy' // using greedy regex console.log(s.replace(/.*\\/([^#]+)#/, '$1:')) // adapted from OP's attempt console.log(s.replace(/.*?([^\\/]+?)#/, '$1:'))
注意.*
部分與要舍棄的子字符串匹配, ()
捕獲要保留的模式,然后重新格式化輸出。
試試這個代碼:
var myString = "http://google.com/vocab/prefix#Billy";
var hashIndex = myString.indexOf("#"); // find where the "#" is
for(var i = hashIndex; i > 0; i--) { // loop from "#" index *back* to closest "/" symbol
if(myString[i] == "/") break; // break loop when "/" is found
}
myString = myString.replace("#", ":"); // replace "#" with ":" as in your example
console.log(myString.substring(i, hashIndex); // output
縮短:
var myString = "http://google.com/vocab/prefix#Billy".replace("#",":");
for(var i = myString.indexOf(":"); i > 0; i--) { if(myString[i] == "/") break; }
console.log(myString.substring(i, myString.indexOf(":");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.