从最后一个斜杠拆分变量

我有一个变量 var1/var2/var3。我希望将上一个斜杠后面的部分 var3存储在一个变量中,将上一个斜杠前面的部分(var1/var2/)存储在另一个变量中。我怎么能这么做?

120105 次浏览

最简单的解决方案是使用 javascript:

var str = "var1/var2/var3/var4/var5";
var splitted = str.split("/");
var first = "";
for (var i=0; i<splitted.length-1; i++) {
first += splitted[i] + "/";
}


var second = "";
if (splitted.length > 0) {
second = splitted[splitted.length-1];
}


alert(first); // var1/var2/var3/var4/
alert(second); // var5

编辑: 但最短的解决方案将是: substring()使用

您可以使用分割,然后拉它的最后一个索引,如下所示:

例如:

var string = 'var1/var2/var3';


var result = string.split('/');         //Splits into an array


//var final = result[result.length -1]; //Grabs last value
//result.pop();                         //Removes last value


var final = result.pop();               //Removes last value and grap the last value
var previous = result.join('/');        //Grabs the previous part


alert("Previous: " + previous + ", Final Part: " + final);  //Alerts results

演示:

Demo

Try something like this:

var vars = "var1/var2/var3";
var arrVars = vars.split("/");
var lastVar = arrVars.pop();
var restVar = arrVars.join("/");
alert(lastVar);
alert(restVar);

您可以使用 lastIndexOf来获取最后一个变量,以及该变量来获取其余的变量。

var rest = str.substring(0, str.lastIndexOf("/") + 1);
var last = str.substring(str.lastIndexOf("/") + 1, str.length);

Jsfiddle的例子。

var str = "var1/var2/var3";


var rest = str.substring(0, str.lastIndexOf("/") + 1);
var last = str.substring(str.lastIndexOf("/") + 1, str.length);
console.log(rest);
console.log(last);

var txt = "var1/var2/var3";
txt = txt.split('/')


var Var1 = txt.pop();
var Var2 = txt[0]+'/'+txt[1];


alert(Var1);
alert(Var2);

Substring (start,end)

哪里

Start = 必需 。开始提取的位置。第一个字符在索引0处

End = 可选 。结束提取的位置(直到,但不包括)。如果省略,则提取字符串的其余部分

    var string = "var1/var2/var3";


start   = string.lastIndexOf('/');  //console.log(start); o/p:- 9
end     = string.length;            //console.log(end);   o/p:- 14


var string_before_last_slash = string.substring(0, start);
console.log(string_before_last_slash);//o/p:- var1/var2


var string_after_last_slash = string.substring(start+1, end);
console.log(string_after_last_slash);//o/p:- var3

或者

    var string_after_last_slash = string.substring(start+1);
console.log(string_after_last_slash);//o/p:- var3

解决方案使用正则表达式,可能不是最快的,但占用更少的空间,可能更容易阅读。

"var1/var2/var3".split(/\/(?=[^\/]+$)/)
  • 匹配斜线
  • (?=-如果后面跟着
    • [^\/]+ – Anything but slashes.
    • $-和字符串的末尾
  • )
var last  = url.split("/").pop();
console.log(last);

You can get last piece of url with array pop method.

您还可以重复对字符串执行 replace()split()join()操作,以获得所需的结果

let str = 'var1/var2/var3';


str = str.split('').reverse().join('').split(/\/(.+)/).map(x => x.split('').reverse().join('')).reverse().filter(x => x);


console.log(str);

说明:

str
.split('') /* ['v', 'a', 'r', '/', 'v', 'a', ...] */
.reverse() /* ['3', 'r', 'a', 'v', '/', 'r', ...] */
.join('') /* '3rav/2rav/1rav' */
.split(/\/(.+)/) /* ['3rav', '2rav/1rav', ''] */
.map(x => x.split('').reverse().join('')) /* ['var3', 'var1/var2', ''] */
.reverse() /* ['', 'var1/var2', 'var3'] */
.filter(x => x) /* ['var/var2', 'var3'] */

使用此功能:

function splitLast(s, sep = ' ') {
/* Split `s` on the last occurrence of `sep` and return both parts
as an array, [left,right]; or return ["",s] if no occurrence was found.
*/
let right = s.split(sep).pop()
let left  = s.substring(0, s.length - right.length - sep.length)
return [left, right]
}

可以这么说:

let [left, right] = splitLast('var1/var2/var3', '/')
// left:  "var1/var2"
// right: "var3"

有了 ES20和新的时间编码,这就简单多了:

"asd/asdff/aksdmmf/uuu".split('/')["asd/asdff/aksdmmf/uuu".split('/').length -1]

它会给你提供“ uuu”谢谢

更简单的选择:

let text = "var1/var2/var3".split("/")[2];
console.log(text)