javascript截取两个符号之间的字符串(2):lastIndexOf匹配和正则表达式匹配

lastIndexOf匹配和正则表达式匹配

  • 项目需求
    • 1.规范的字符串
    • 2.不规范的字符串
    • 3-1.万能封装
    • 3-2.ChatGPT的优化写法
    • 4.正则表达式的用法
    • 5.补充知识:lastIndexOf的用法

项目需求

  • javascript中截取字符串中最后一个“/”和“?”之间的内容。

1.规范的字符串

https://test.com/p/course/column/p_64a7738ce4b0b0bc2bfcebaa?shareBind=true

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

在这里插入图片描述

在上述代码中,我们先使用lastIndexOf方法找到最后一个斜杠和问号的索引位置。然后,我们检查这两个索引位置是否有效,确保斜杠位于问号之前。如果索引位置无效,则返回空字符串。最后,我们使用substring方法截取位于斜杠之后、问号之前的内容,并返回结果。

请注意,上述代码仅考虑了截取最后一个斜杠和问号之间的内容。如果URL中没有斜杠或问号,或者它们的顺序不正确,提取的内容可能会有误。

2.不规范的字符串

如果提供的地址字符串不包含“?”时:

https://test.com/p/course/column/p_64a7738ce4b0b0bc2bfcebaa

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.ChatGPT的优化写法

可以使用 `lastIndexOf``substring` 方法来实现截取字符串中最后一个斜杠(/)和问号(?)之间的内容:```javascript
function 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); // 输出: file
console.log(extractedContent2); // 输出: file

在上述代码中,我们首先使用 lastIndexOf 方法找到最后一个斜杠和问号的索引位置。然后,我们使用两个索引位置来判断是否存在问号。如果存在问号,则使用 substring 方法从最后一个斜杠的下一个位置开始截取到最后一个问号的位置之间的内容。如果不存在问号,则使用 substring 方法从最后一个斜杠的下一个位置开始截取到字符串的末尾的内容。

这种写法也能够正确地截取最后一个斜杠和问号之间的内容。在示例用法中,两个 URL 都会输出结果 “file”。

在这里插入图片描述

4.正则表达式的用法

function extractContent(url) {const regex = /\/([^/?]+)\??.*$/;const match = url.match(regex);if (match) {return match[1];}return '';
}// 示例用法
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); // 输出: file
console.log(extractedContent2); // 输出: file

在上述代码中,我们使用正则表达式来匹配最后一个斜杠和问号之间的内容。正则表达式 /\/([^/?]+)\??.*$/ 匹配的规则如下:

  • \/:匹配一个斜杠。
  • ([^/?]+):匹配除了斜杠和问号之外的连续字符,并将其捕获为分组。
  • \??:匹配一个可选的问号。
  • .*$:匹配剩余的任意字符。

然后,我们使用字符串的 match 方法并传入正则表达式来查找匹配项。如果有匹配项,则返回第一个捕获分组内容 (match[1]),即最后一个斜杠和问号之间的内容。如果没有匹配项,则返回空字符串。在示例用法中,两个 URL 都会输出结果 “file”。

5.补充知识:lastIndexOf的用法

lastIndexOf 是 JavaScript 字符串的一个方法,用于返回指定字符或子字符串在原始字符串中最后一次出现的位置索引。

语法:

string.lastIndexOf(searchValue[, fromIndex])

参数说明:

  • searchValue:要搜索的字符或子字符串。
  • fromIndex(可选):从哪个位置开始向前搜索。默认为字符串的末尾(即 string.length - 1)。

返回值:

  • 如果找到匹配的字符或子字符串,则返回最后一次出现的索引位置。
  • 如果未找到匹配的字符或子字符串,则返回 -1。

示例用法:

const str = 'Hello, World!';
const lastIndex = str.lastIndexOf('o');
console.log(lastIndex); // 输出: 8const lastIndex2 = str.lastIndexOf('o', 7);
console.log(lastIndex2); // 输出: 4const lastIndex3 = str.lastIndexOf('JavaScript');
console.log(lastIndex3); // 输出: -1

在上面的示例中,我们使用 lastIndexOf 方法搜索字符串中最后一次出现的字符 'o' 的索引位置。第一个 lastIndex 示例返回 8,因为最后一个 'o' 在索引位置 8 处。第二个 lastIndex2 示例中,我们通过将 fromIndex 参数设置为 7 来指定了搜索的起始位置,结果返回 4,因为最后一个 'o' 在索引位置 4 处。最后一个 lastIndex3 示例中,我们搜索了一个不存在的子字符串 'JavaScript',因此返回 -1。根据需求使用 lastIndexOf 方法来查找字符串中最后一次出现的字符或子字符串的位置。


@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13817.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能Python-python_quine

Python Quine: 在Python编程中理解自我复制的魅力 如果您已经开始了编程学习之旅&#xff0c;您就可能听说过Quine。Quine是一种程序&#xff0c;它可以输出自己的源代码&#xff0c;并被称为自我复制程序。这种程序很少出现在编程实践中&#xff0c;但在计算机科学中却发挥着…

chatgpt赋能python:Python分隔符怎么用?

Python分隔符怎么用&#xff1f; 在Python编程中&#xff0c;分隔符是一个非常重要的概念。它可以帮助我们在代码中分隔不同的元素&#xff0c;从而让代码更加易读和易于管理。在本文中&#xff0c;我们将深入探讨Python中分隔符的使用方法。 什么是分隔符&#xff1f; 在Py…

chatgpt赋能Python-python3_8怎么换行

Python是一种高级编程语言&#xff0c;其易用性和简洁语法深受程序员的喜爱。而在Python中&#xff0c;换行是一项必不可少的操作。今天&#xff0c;我们将介绍如何在Python3.8中进行换行&#xff0c;并提供一些有用的技巧。 Python3.8中的换行操作 在Python中&#xff0c;我…

chatgpt赋能python:Python中符号详解

Python中符号详解 Python是一种高级编程语言&#xff0c;使用简洁、优雅的语法非常受欢迎。在Python中&#xff0c;有很多符号&#xff0c;这些符号对于写出优雅、高效的代码至关重要。在本文中&#xff0c;我们将详细介绍Python中的常见符号。 1. 等号&#xff08;&#xff…

《Java黑皮书基础篇第10版》 第10章【习题】

Java语言程序设计 习题第十章 10.2章节习题 10.1 如果重新定义程序清单102中的Loan类&#xff0c;去掉其中的设置方法&#xff0c;这个类是不可改变的吗? 这个类依然是可以改变的&#xff0c;因为每一笔贷款作为一个对象&#xff0c;都是可以改变的 10.3章节习题 10.2 程序…

【人工智能与机器学习】——线性回归、逻辑回归与分类评价指标(学习笔记)

&#x1f4d6; 前言&#xff1a;线性回归&#xff08;Lincar Regression&#xff09;模型是最简单的线性模型之一&#xff0c;简而言之就像一元一次函数&#xff0c;是所有机器学习初学者的起点。而逻辑回归&#xff08;Logistic Regression&#xff09;则稍显复杂&#xff0c;…

阿里巴巴正在为投资者投下一颗“重磅炸弹”

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 在本文中&#xff0c;猛兽财经将围绕&#xff1a;马云在这个时候回国的意义、阿里巴巴拆分为六大业务集团、为什么张勇将阿里巴巴拆分为六大集团对投资者有利、拆分后阿里巴巴各个集团业务的估值分析、阿里巴巴的财务业绩、…

iOS 摸鱼周报 #82 | 去中心化社交软件 Damus

本期概要 本期话题&#xff1a;设计开发加速器线下活动&#xff1a;女性开发者社区日&#xff1b;本周学习&#xff1a;Python 如何调用 Swift 程序内容推荐&#xff1a;涵盖现代 SwiftUI 编程探讨、可变视图、NSTimer、Swift Charts 等方面的内容摸一下鱼&#xff1a;去中心化…

这才是Excel未来的样子,口喊求和什么的弱爆了

Alex 发自 凹非寺量子位 | 公众号 QbitAI 不知各位是否有过被Excel支配的恐惧&#xff1f; 试想一下表格中密密麻麻的数据、让人云里雾里的工具菜单&#xff0c;还有一堆记不清楚的公式…… 现在&#xff0c;有位大聪明为了简化操作&#xff0c;搞出了一个为Excel而生的AI助手。…

中产,疯狂搞“香港身份”

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 风水轮流转&#xff0c;今朝到香港。去年K哥身边有几个朋友去了新加坡&#xff0c;今年才刚到四月份&#xff0c;就又有朋友开始在想办法搞香港身份了。这些人都是妥妥的中产&#xff0c;年龄在四五十…

聚观早报 | 首个国产新冠药停产;阿里巴巴创始人马云已回国内

今日要闻&#xff1a;首个国产新冠药停产&#xff1b;阿里巴巴创始人马云已回国内&#xff1b;家乐福中国内地首店关闭&#xff1b;好丽友漏税22万被罚12万&#xff1b;苹果iOS 16.4正式版来了 首个国产新冠药停产 腾盛博药的首款商业化产品&#xff0c;新冠中和抗体药物“安巴…

万字长文:一文看懂GPT风口,有哪些创业机会?

“故事发生在未来&#xff0c;2040年通用人工智能系统已经接管了城市的管理。其中一个AI系统的管理者因为妻子的背叛&#xff0c;修改AI系统的一个底层参数——让AI对人类的谎言、背叛怀有深深的厌恶。之后AI在每天对社交平台的监控中看到了无数谎言、背叛&#xff0c;报复的动…

硅谷新王登国会山,呼吁加强 AI 监管;马斯克任命推特新 CEO;数字媒体巨头申请破产;欧盟通过全球首个全面监管加密资产框架 | 经济学人第 21 周

1. 硅谷新王登国会山&#xff0c;呼吁加强 AI 监管 Sam Altman, the chief executive of OpenAI, the firm behind the ChatGPT chatbot, called for tighter regulation of rapidly developing generative artificial intelligence, such as by forcing disclosure on images …

chatgpt赋能python:Python找钱方案:让你的货币计算更加精准

Python找钱方案&#xff1a;让你的货币计算更加精准 Python作为一门流行的编程语言&#xff0c;广泛应用于数据分析、自然语言处理、Web开发等领域。在货币计算方面&#xff0c;Python同样具有优秀的表现&#xff0c;并能够帮助你处理找零、税率等问题。本文将介绍Python中常见…

chatgpt赋能python:Python中的Locals:简介

Python中的Locals: 简介 在Python编程中&#xff0c;locals()函数是一个非常有用的内置函数&#xff0c;它可以返回当前命名空间中的所有局部变量和它们的值。这个函数一般在调试和测试阶段使用&#xff0c;以便帮助开发者跟踪和调试代码中的变量。 在这篇文章中&#xff0c;…

chatgpt赋能python:Python教程:如何进行打折?

Python 教程&#xff1a;如何进行打折&#xff1f; Python 已经成为了世界上最流行的编程语言之一&#xff0c;它拥有丰富的库和工具&#xff0c;可以用于开发各种项目和应用程序。 在这个教程中&#xff0c;我们将介绍如何使用 Python 进行打折。我们将探讨如何使用 Python …

chatgpt赋能Python-python_float_精度

Python Float 精度问题详解——不容忽视的小数位 在处理数据时&#xff0c;我们经常需要使用浮点数。Python中的float数据类型被广泛使用&#xff0c;使得开发人员可以轻松地实现复杂的数学计算、数据分析等功能。然而&#xff0c;在使用Python浮点数时&#xff0c;程序员必须…

快要做外公的盖茨是怎样看ChatGPT和Web3

1月12日下午&#xff0c;微软联合创始人比尔盖茨&#xff08;Bill Gates&#xff09;在Reddit上的一年一度Ask Me Anything活动上对时下热门科技概念发表了看法。这是比尔盖茨第11次参加Reddit在线的问答活动&#xff0c;他回答了网友关于世界气候、AI、医疗等方面的问题&#…

JAVA | 学习日记 day8

目录 逻辑运算符 ​编辑 ^符号 例子 三元表达式 例子 标识符的命名规则 键盘输入语句 进制 进制的解释 原码、反码、补码 位运算符 逻辑运算符 遇到& 前后两个语句都要执行 而遇到两个 && 只执行第一个 ^符号 不同则为真 例子 第一个 if 判断…

ChatGPT救了我的狗命。。。

不要误会&#xff0c;别把标题理解错了。 标题里的“我”是个名字叫Cooper的美国人。狗是他家养的狗。 故事是这样的&#xff0c;这个美国人在Twitter上发文&#xff0c;表示他家有条狗生病了。治疗的前几天&#xff0c;病开始好转了。 但是不知道为什么&#xff0c;没过几天&a…