javascript 获取单词后和文件扩展名前的子字符串

bvk5enib  于 2023-01-24  发布在  Java
关注(0)|答案(3)|浏览(119)

我有一个URL,格式如下:

https://res.cloudinary.com/xyzzz/image/upload/v1673615977/dealetePosts/hokhqmcmmkveqhxtr0nb.jpg

如何从中提取hokhqmcmmkveqhxtr0nb?所以提取dealetePosts.jpg之间的内容
字符串位置,然后是子字符串可以工作,但有没有更简单的方法?
这就是我到目前为止所拥有的,并且很有效,但这是最好的方法吗?

const publicID = dealPic.substring(
  dealPic.indexOf("dealetePosts/") + 13, 
  dealPic.lastIndexOf(".jpg")
);
ckocjqey

ckocjqey1#

你可以使用类似split and pop的方法来斜线“/”&“.”字符,如果你总是期待相同类型的url。

let url = "https://res.cloudinary.com/xyzzz/image/upload/v1673615977/dealetePosts/hokhqmcmmkveqhxtr0nb.jpg";
let key = url.split("/").pop().split(".")[0];
console.log(key);
dtcbnfnu

dtcbnfnu2#

我使用substring函数和regex来删除任何扩展名(jpg,png等),即使dealetePosts更改为其他名称,它也能正常工作

const test = "https://res.cloudinary.com/xyzzz/image/upload/v1673615977/dealetePosts/hokhqmcmmkveqhxtr0nb.jpg"

function substr(str = ""){
  
  const lastIndexSlash = str.lastIndexOf("/") + 1
  
  
  return str.substring(lastIndexSlash, str.length).replace(/\.[^/.]+$/, "");
}

console.log(substr(test))
ax6ht2ek

ax6ht2ek3#

另一个更易于阅读和理解的方法是使用正则表达式匹配要提取的文本。以下代码将匹配“dealetePosts/”和“.jpg”之间的文本,并将其作为第一个捕获的组返回:

const publicID = dealPic.match(/dealetePosts\/(.*)\.jpg/)[1];

相关问题