匹配和正则表达式匹配
项目需求1.规范的字符串
function extractContent(url) {const lastSlashIndex = url.lastIndexOf('/');const lastQuestionMarkIndex = url.lastIndexOf('?');if (lastSlashIndex === -1 || lastQuestionMarkIndex === -1 || lastQuestionMarkIndex < lastSlashIndex) {return '';}const content = url.substring(lastSlashIndex + 1, lastQuestionMarkIndex);return content;}// 示例用法const url = "https://test.com/p/course/column/p_64a7738ce4b0b0bc2bfcebaa?shareBind=true";const extractedContent = extractContent(url);console.log(extractedContent); // 输出: p_64a7738ce4b0b0bc2bfcebaa
在上述代码中,我们先使用方法找到最后一个斜杠和问号的索引位置 。然后,我们检查这两个索引位置是否有效,确保斜杠位于问号之前 。如果索引位置无效,则返回空字符串 。最后,我们使用方法截取位于斜杠之后、问号之前的内容,并返回结果 。
请注意,上述代码仅考虑了截取最后一个斜杠和问号之间的内容 。如果URL中没有斜杠或问号,或者它们的顺序不正确,提取的内容可能会有误 。
2.不规范的字符串
如果提供的地址字符串不包含“?”时:
function extractContent(url) {const lastSlashIndex = url.lastIndexOf('/');if (lastSlashIndex === -1) {return url;}const content = url.substring(lastSlashIndex + 1);return content;}// 示例用法const url = "https://test.com/p/course/column/p_64a7738ce4b0b0bc2bfcebaa";const extractedContent = extractContent(url);console.log(extractedContent); // 输出: p_64a7738ce4b0b0bc2bfcebaa
3-1.万能封装
文章插图
function extractContent(url) {var lastSlashIndex = url.lastIndexOf('/');var lastQuestionMarkIndex = url.lastIndexOf('?');var content='';//存在斜杠时if (lastSlashIndex != -1) {content = url.substring(lastSlashIndex + 1, lastQuestionMarkIndex);}//不存在问号时if (lastQuestionMarkIndex === -1) {content = url.substring(lastSlashIndex + 1);}return content;}// 示例用法const url = "https://test.com/p/course/column/p_64a7738ce4b0b0bc2bfcebaa";const extractedContent = extractContent(url);console.log(extractedContent); // 输出: p_64a7738ce4b0b0bc2bfcebaa
3-2.的优化写法
可以使用 `lastIndexOf` 和 `substring` 方法来实现截取字符串中最后一个斜杠(/)和问号(?)之间的内容:```javascriptfunction extractContent(url) {const lastSlashIndex = url.lastIndexOf('/');const lastQuestionMarkIndex = url.lastIndexOf('?');if (lastQuestionMarkIndex !== -1) {return url.substring(lastSlashIndex + 1, lastQuestionMarkIndex);}return url.substring(lastSlashIndex + 1);}// 示例用法const url1 = "https://www.example.com/path/to/file?param=value";const url2 = "https://www.example.com/path/to/file";const extractedContent1 = extractContent(url1);const extractedContent2 = extractContent(url2);console.log(extractedContent1); // 输出: fileconsole.log(extractedContent2); // 输出: file
在上述代码中,我们首先使用方法找到最后一个斜杠和问号的索引位置 。然后,我们使用两个索引位置来判断是否存在问号 。如果存在问号,则使用方法从最后一个斜杠的下一个位置开始截取到最后一个问号的位置之间的内容 。如果不存在问号,则使用方法从最后一个斜杠的下一个位置开始截取到字符串的末尾的内容 。
这种写法也能够正确地截取最后一个斜杠和问号之间的内容 。在示例用法中,两个 URL 都会输出结果 “file” 。
4.正则表达式的用法
- 湖南树王:湖南最高水杉有两个半杜甫江阁高 中国之最水杉树
- arcgis for javascript api4
- chatgpt赋能python:如何在Python中连接两个字符串
- 美俄两个核大国的核力量对比,美国在当下敢与俄罗斯打核大战吗? 俄罗斯拥有哪些世界之最呢
- 世界上最伟大的两个字是什么 6个字的世界之最
- 陈武帝陈霸先的两个皇后各是谁?
- 中国人口最多的10个省,有两个人口突破1个亿,是哪两个呢 世界十大人口国家
- 武功山,可能是中国最特殊的山峰,诞生了两个国家5A级别景区 中国十大非著名山峰
- 山东第二、沂蒙山最高峰,藏着一个吉尼斯世界纪录,两个江北之最 泰山吉尼斯记录
- 荷兰意大利