var str = "https://cdn.fbsbx.com/v/t59.2708-21/68856895_411975049700005_8580443955521388544_n.xls/test.xls?_nc_cat=106&_nc_oc=AQmcm2PVCUFFyUJDJgLs3ZYM4Dg12PX1Wv48Fm0LJ8-Qi8duxOpEVrD2uFgrD9e1pDOXcLpJmbtjbveAm12xczd2&_nc_ht=cdn.fbsbx.com&oh=18eab18ae1d1cf2a95084bba0a002163&oe=5D8F8124";
var n = str.substring(str.indexOf("\\.") +1 , str.indexOf("?_nc_cat="));
我有这个字符串,但是我的输出是:
https://cdn.fbsbx.com/v/t59.2708-21/68856895_411975049700005_8580443955521388544_n.xls/test.xls
我怎么只能得到这个.xls?
我的另一个字符串是:
https://scontent.xx.fbcdn.net/v/t1.15752-9/70629455_2730574856953299_3640328874664919040_n.png?_nc_cat=100&_nc_oc=AQm0m5jryh7zAzyj2R-w7ke0DKQgHM7aYaVkkRjPYDUQ6g-FUAWqVwhnr7qxqISkWMdiNhtp7e8gYMA6gss58poN&_nc_ad=z-m&_nc_cid=0&_nc_zor=9&_nc_ht=scontent.xx&oh=1cbb98fb9484bd3f26b6058808cca889&oe=5E36459B
但是从即时链接开始我得到的并不是“ png”一词。
答案 0 :(得分:1)
我将使用正则表达式,并在寻找?
时匹配单词字符:
const getFileType = str => str.match(/\w+(?=\?)/)[0];
console.log(getFileType("https://cdn.fbsbx.com/v/t59.2708-21/68856895_411975049700005_8580443955521388544_n.xls/test.xls?_nc_cat=106&_nc_oc=AQmcm2PVCUFFyUJDJgLs3ZYM4Dg12PX1Wv48Fm0LJ8-Qi8duxOpEVrD2uFgrD9e1pDOXcLpJmbtjbveAm12xczd2&_nc_ht=cdn.fbsbx.com&oh=18eab18ae1d1cf2a95084bba0a002163&oe=5D8F8124"));
console.log(getFileType('https://scontent.xx.fbcdn.net/v/t1.15752-9/70629455_2730574856953299_3640328874664919040_n.png?_nc_cat=100&_nc_oc=AQm0m5jryh7zAzyj2R-w7ke0DKQgHM7aYaVkkRjPYDUQ6g-FUAWqVwhnr7qxqISkWMdiNhtp7e8gYMA6gss58poN&_nc_ad=z-m&_nc_cid=0&_nc_zor=9&_nc_ht=scontent.xx&oh=1cbb98fb9484bd3f26b6058808cca889&oe=5E36459B'));
答案 1 :(得分:0)
简单,只需您以正确的方式使用LastIndexof()
即可
str = "https://scontent.xx.fbcdn.net/v/t1.15752-9/70629455_2730574856953299_3640328874664919040_n.png?_nc_cat=100&_nc_oc=AQm0m5jryh7zAzyj2R-w7ke0DKQgHM7aYaVkkRjPYDUQ6g-FUAWqVwhnr7qxqISkWMdiNhtp7e8gYMA6gss58poN&_nc_ad=z-m&_nc_cid=0&_nc_zor=9&_nc_ht=scontent.xx&oh=1cbb98fb9484bd3f26b6058808cca889&oe=5E36459B";
url = str.substring(0,str.indexOf("?"));
ext = str.substring(url.lastIndexOf(".")+1, url.length);
其他任何字符串也一样。
答案 2 :(得分:0)
由于您似乎正在尝试从pathname
中获取最后一个值,该值之前是URL中的.
,因此可以使用URL API
只需使用URL api解析URL,获取patname值并在.
上进行拆分,并从拆分后的数组中获取最后一个元素。
var str = "https://cdn.fbsbx.com/v/t59.2708-21/68856895_411975049700005_8580443955521388544_n.xls/test.xls?_nc_cat=106&_nc_oc=AQmcm2PVCUFFyUJDJgLs3ZYM4Dg12PX1Wv48Fm0LJ8-Qi8duxOpEVrD2uFgrD9e1pDOXcLpJmbtjbveAm12xczd2&_nc_ht=cdn.fbsbx.com&oh=18eab18ae1d1cf2a95084bba0a002163&oe=5D8F8124";
let valueExtractor = (str) =>{
let urlParse = new URL(str)
return urlParse.pathname.split('.').pop()
}
console.log(valueExtractor(str))
console.log(valueExtractor("https://cdn.fbsbx.com/v/t59.2708-21/68856895_411975049700005_8580443955521388544_n.xls/test.png?_nc_cat=106&_nc_oc=AQmcm2PVCUFFyUJDJgLs3ZYM4Dg12PX1Wv48Fm0LJ8-Qi8duxOpEVrD2uFgrD9e1pDOXcLpJmbtjbveAm12xczd2&_nc_ht=cdn.fbsbx.com&oh=18eab18ae1d1cf2a95084bba0a002163&oe=5D8F8124"))