网站首页 > 知识剖析 正文
学习在 JavaScript 中获取字符串的两个字符之间的子字符串的多种方法。
1. String substring(), indexOf() 和 lastIndexOf() 方法
要在 JavaScript 中获取字符串的两个字符之间的子字符串,请在字符串上调用 slice() 方法,将第一个字符第一次出现之后的索引作为第一个参数传递,并将最后一次出现的索引传递给 第二个字符作为第二个参数。 例如:
function getSubstring(str, char1, char2) {
return str.substring(
str.indexOf(char1) + 1,
str.lastIndexOf(char2)
);
}const str1 = 'one:two;three';
const substr1 = getSubstring(str1, ':', ';');
console.log(substr1); // twoconst str2 = 'one?two!three';
const substr2 = getSubstring(str2, '?', '!');
console.log(substr2); // two
String indexOf() 方法返回值在字符串中第一次出现的位置。 另一方面,lastIndexOf() 返回值在字符串中最后一次出现的位置。
String substring() 方法返回开始和结束索引之间的字符串部分,分别由第一个和第二个参数指定。 我们将 1 添加到 indexOf() 的结果中,因为我们不希望第一个字符包含在我们试图获取的子字符串中。 但是,我们不需要从 lastIndexOf() 的结果中减去 1,因为 substring() 已经排除了指定结束索引处的字符。
如果字符串中不存在该值,则 indexOf() 和 lastIndexOf() 都将返回 -1。 这意味着当字符串中不存在第一个字符时,从开始到最后出现第二个字符的所有字符串都将包含在字符串中。
const str1 = 'one:two;three';
const substr1 = getSubstring(str1, '-', ';');
console.log(substr1); // one:two
此外,当第二个字符不存在时,从第一个字符开始到第一次出现的所有字符串都将包含在字符串中。
const str1 = 'one:two;three';
const substr1 = getSubstring(str1, ':', '-');
console.log(substr1); // one
根据我们的用例,这可能不是我们想要的。 如果我们希望在任一字符不存在时返回一个空字符串 (''),我们需要显式检查这一点:
function getSubstring(str, char1, char2) {
const char1Index = str.indexOf(char1);
const char2Index = str.lastIndexOf(char2);
if (char1Index === -1) return '';
if (char2Index === -1) return '';
return str.substring(char1Index, char2Index);
}const str1 = 'one:two;three';
const substr1 = getSubstring(str1, '-', ';');
console.log(substr1); // '' (empty string)const substr2 = getSubstring(str1, ':', '-');
console.log(substr2); // '' (empty string)
2. String split()、Array slice() 和 Array join() 方法
这是另一种获取字符串的两个字符之间的子字符串的方法:
function getSubstring(str, char1, char2) {
return str
.split(char1)
.slice(1)
.join('')
.split(char2)
.slice(0, -1)
.join('');
}const str1 = 'one:two;three';
const substr1 = getSubstring(str1, ':', ';');
console.log(substr1); // twoconst str2 = 'one?two!three';
const substr2 = getSubstring(str2, '?', '!');
console.log(substr2); // two
String split() 方法使用指定的分隔符分割字符串。
const str1 = 'one:two;three';// [ 'one', 'two;three' ]
console.log(str1.split(':'));
Array slice() 方法提取数组的开始和结束索引之间的元素,这些元素分别由第一个和第二个参数指定。 我们将 1 作为第一个参数传递而没有指定第二个参数,因此 slice() 从索引 1 处的元素提取到字符串的末尾。
// ['two;three'];
console.log([ 'one', 'two;three' ].slice(1));
我们在 slice() 的结果上调用 Array join() 方法,将数组的元素连接成一个字符串。
const str1 = 'one:two;three';// two;three
console.log(['two;three'].join(''));
我们再次分割这个结果,这次是第二个字符。
// ['two', 'three'];
console.log('two;three'.split(';'));
我们在此拆分产生的数组上调用 slice(),将 0 和 -1 作为参数传递,以将除最后一个之外的所有数组元素复制到新数组中。
// [ 'two' ]
console.log(['two', 'three'].slice(0, -1));
最后,我们在这个结果上调用 join() 来获取两个字符之间的字符串。
与第一种方法不同,这种方法通过返回一个空字符串来处理其中一个字符不在字符串中的情况。
function getSubstring(str, char1, char2) {
return str
.split(char1)
.slice(1)
.join('')
.split(char2)
.slice(0, -1)
.join('');
}const str1 = 'one:two;three';
const substr1 = getSubstring(str1, '-', ';');
console.log(substr1); // '' (empty string)const substr2 = getSubstring(str1, ':', '-');
console.log(substr2); // '' (empty string)
关注七爪网,获取更多APP/小程序/网站源码资源!
猜你喜欢
- 2024-12-27 前端中JS的字符编码及常用操作字符API
- 2024-12-27 更好搜索体验,火狐Firefox33.0.0.5397官方下载
- 2024-12-27 Fuse.js - 免费开源、小巧无依赖的模糊搜索 JavaScript 工具库
- 2024-12-27 JavaScript字符串charAt()方法教程
- 2024-12-27 Firefox火狐浏览器126版更新修复PDF.js漏洞
- 2024-12-27 JS原生对字符串操作的常用方法 原生js怎么获取子元素
- 2024-12-27 新增忘记按钮,火狐浏览器Firefox33.1官方下载
- 2024-12-27 使用JShaman进行JS代码加密时,保留字的作用
- 2024-12-27 Python教程:第9篇 字符串基本操作
- 2024-12-27 Web3系列教程之入门篇——1:了解React (Next.js)
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)