js中substring的用法

admin 2 0

### JS中substring的用法详解

在JavaScript中,`substring()` 方法是一个非常实用的字符串方法,用于提取字符串中介于两个指定下标之间的字符,这个方法不会改变原字符串,而是返回一个新的字符串,该字符串包含从 `start` 到 `end`(不包括 `end`)之间的字符,如果 `start` 等于 `end`,则返回一个空字符串,如果省略 `end`,则 `substring()` 提取字符一直到字符串末尾,如果 `start` 或 `end` 为负数,则它们被视为 0,如果 `start` 大于 `end`,则 `substring()` 会交换这两个参数的值。

#### 基本语法

str.substring(start[, end])

- `str`:需要提取子字符串的原始字符串。

- `start`(必需):提取起始处的索引(从该索引处开始提取原字符串中的字符),如果该值为负数,则被视为 0。

- `end`(可选):在该索引处停止提取字符的索引(即该索引处的字符不会被提取),如果该值为负数,则会被视为 0,如果省略该参数,`substring()` 会一直提取到字符串末尾。

#### 返回值

返回一个新的字符串,该字符串包含从 `start` 到 `end`(不包括 `end`)之间的字符。

#### 示例

##### 示例 1:基本用法

let str = "Hello, world!";
let result = str.substring(7);
console.log(result); // 输出: world!

result = str.substring(7, 12);
console.log(result); // 输出: world

result = str.substring(0, 5);
console.log(result); // 输出: Hello

result = str.substring(1, 1);
console.log(result); // 输出: 空字符串 ""

result = str.substring(-3); // start 为负数,视为 0
console.log(result); // 输出: Hello, world!

result = str.substring(2, -1); // end 为负数,视为 0,且 start 和 end 交换
console.log(result); // 输出: He

##### 示例 2:处理边界情况

let str = "JavaScript";
let result = str.substring(0, 10); // end 大于字符串长度,提取到字符串末尾
console.log(result); // 输出: JavaScript

result = str.substring(10, 0); // start 大于 end,交换后提取
console.log(result); // 输出: 空字符串 ""

result = str.substring(2, 2); // start 等于 end
console.log(result); // 输出: 空字符串 ""

##### 示例 3:与其他字符串方法的比较

虽然 `substring()` 方法在处理字符串提取时非常有用,但JavaScript还提供了其他几个类似的方法,如 `slice()` 和 `substr()`,它们在某些情况下可以互换使用,但也有一些关键的区别。

- **`slice()`**:与 `substring()` 类似,`slice()` 方法也提取字符串的某个部分,但它允许 `start` 和 `end` 参数为负数,表示从字符串末尾开始的位置,如果省略 `end`,则 `slice()` 会提取到字符串末尾。

let str = "Hello, world!";
let result = str.slice(7);
console.log(result); // 输出: world!

result = str.slice(-6); // 允许负数索引
console.log(result); // 输出: world!

result = str.slice(7, 12);
console.log(result); // 输出: world

result = str.slice(2, -1); // 允许负数索引
console.log(result); // 输出: llo, worl

- **`substr()`**:虽然 `substr()` 方法也用于提取字符串的一部分,但它接受不同的参数,`substr()` 方法接受两个参数:`start`(必需)和 `length`(可选),`start` 是开始提取字符的索引,而 `length` 是要提取的字符数,如果省略 `length`,则 `substr()` 会提取到字符串末尾,需要注意的是,`substr()` 方法已被废弃,并在未来的JavaScript版本中可能会被移除,因此建议使用 `substring()` 或 `slice()` 方法。

```javascript

let str = "Hello, world!";

let result = str.substr(7);

console.log(result); // 输出: world!

result = str.substr(7, 5);

console.log(result); // 输出: world

// 注意