【js(substring及的用法及截取相对路径)】在 JavaScript 中,`substring()` 是一个常用的字符串方法,用于从字符串中提取子字符串。它可以根据起始和结束索引返回指定范围内的字符。除了基本的字符串截取功能外,`substring()` 也可以用来处理文件路径,例如提取相对路径。下面将对 `substring()` 的用法进行总结,并结合实际场景说明如何使用它来截取相对路径。
一、`substring()` 方法的基本用法
参数 | 类型 | 说明 |
`start` | number | 起始索引(包含) |
`end` | number (可选) | 结束索引(不包含),若省略则截取到字符串末尾 |
> 注意:`substring()` 不会修改原始字符串,而是返回一个新的字符串。
示例代码:
```javascript
let str = "Hello, world!";
console.log(str.substring(0, 5)); // 输出: Hello
console.log(str.substring(7));// 输出: world!
```
二、`substring()` 截取相对路径的应用
在处理文件路径时,常需要提取相对路径,例如从完整路径中获取当前目录下的文件名或子路径。
示例:从绝对路径中提取相对路径
假设有一个完整的文件路径为:
```
"C:/Projects/myapp/src/index.js"
```
我们希望提取出相对路径 `"src/index.js"`,可以使用 `substring()` 实现如下:
```javascript
let fullPath = "C:/Projects/myapp/src/index.js";
let relativePath = fullPath.substring(fullPath.indexOf("myapp") + 6);
console.log(relativePath);// 输出: src/index.js
```
说明:
- `fullPath.indexOf("myapp")` 找到 `"myapp"` 的起始位置。
- `+ 6` 是因为 `"myapp"` 长度为 6,所以从其后一位开始截取。
- 最终得到的是从 `"myapp"` 后面的部分,即相对路径。
三、`substring()` 与 `slice()` 的区别
虽然 `substring()` 和 `slice()` 都可以截取字符串,但它们的行为略有不同:
方法 | 是否允许负数参数 | 是否交换参数 | 返回结果 |
`substring()` | ❌ 不支持 | ✅ 如果 `start > end` 会自动交换 | 正确顺序的子字符串 |
`slice()` | ✅ 支持 | ❌ 不会交换 | 按照参数顺序返回 |
> 建议根据具体需求选择合适的方法。
四、总结表格
功能 | 描述 | 示例 |
`substring(start, end)` | 截取从 `start` 到 `end` 的子字符串(不包括 `end`) | `str.substring(0, 3)` |
`substring(start)` | 截取从 `start` 到字符串末尾 | `str.substring(4)` |
截取相对路径 | 从完整路径中提取相对路径 | `path.substring(path.indexOf("myapp") + 6)` |
与 `slice()` 区别 | `substring()` 不支持负数,但会自动调整参数顺序 | `str.substring(2, 1)` → `str[1]` |
适用场景 | 处理文件路径、字符串片段提取 | 文件路径解析、URL 分析等 |
通过合理使用 `substring()`,我们可以高效地处理字符串内容,尤其是在处理文件路径或 URL 时非常实用。建议在实际开发中结合 `indexOf()`、`lastIndexOf()` 等方法,实现更灵活的字符串操作。