簡體   English   中英

字符串將url替換為javascript中相同url的一部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM