js中如何截取字符

在js中截取字符串有两种方法:

1:substring2substr

substring返回一个从指定位置开始的指定长度的子字符串。arr。substring(start,length)

1:    substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
如果 start 或 end 为负数,那么它将被替换为 0。

2:     substr返回一个从指定位置开始到指定位置的子字符串。arr.substr(start,end)

如果 length 为 0 或负数,将返回一个空字符串。
如果没有指定该参数,则子字符串将延续到stringObject的最后。

 

var barcode = 'ITEM000003-2';
console.log(barcode.substring(0,1));--------------------------I
console.log(barcode.substring(0,3));--------------------------ITE
console.log(barcode.substring(1,4));--------------------------TEM0
console.log(barcode.substring(2,6));--------------------------EM00
console.log(barcode.substring(0,9));--------------------------ITEM00000
console.log(barcode.substring(5,10));------------------------00003
console.log(barcode.substring(3,11));------------------------M000003-
console.log(barcode.substring(0,12));------------------------ITEM000003-2
console.log(barcode.substr(0,5));-----------------------------ITEM0
console.log(barcode.substr(0,7));-----------------------------ITEM000
console.log(barcode.substr(1,6));-----------------------------TEM00
console.log(barcode.substr(2,8));-----------------------------EM0000
console.log(barcode.substr(2));-------------------------------EM000003-2
console.log(barcode.substr(3,11));---------------------------M000003-

 

<think>我们被要求总结JavaScript中字符截取的三个主要方法:substring, substr, 和 slice。根据提供的引用资料,我们可以总结如下: 1. **substring(startIndex [, endIndex])** - 参数:`startIndex` 表示起始索引(包含),`endIndex` 表示结束索引(不包含)。 - 特点: - 如果任一参数为负数,则被视为0。 - 如果 `startIndex` 大于 `endIndex`,则方法会自动交换这两个参数。 - 如果省略 `endIndex`,则截取字符串末尾。 - 示例:`"0123456789".substring(3,5)` 返回 `"34"`。 2. **substr(startIndex [, length])** - 参数:`startIndex` 表示起始索引(包含),`length` 表示要截取的长度。 - 特点: - 如果 `startIndex` 为负数,则从字符串末尾开始计算(-1表示最后一个字符)。 - 如果 `length` 为0或负数,则返回空字符串。 - 如果省略 `length`,则截取字符串末尾。 - 示例:`"0123456789".substr(3,5)` 返回 `"34567"`。 3. **slice(startIndex [, endIndex])** - 参数:`startIndex` 表示起始索引(包含),`endIndex` 表示结束索引(不包含)。 - 特点: - 支持负数索引,负数表示从字符串末尾开始计算。 - 如果 `startIndex` 大于 `endIndex`(且没有负数的情况),则返回空字符串(不会交换参数)。 - 如果省略 `endIndex`,则截取字符串末尾。 - 示例:`"0123456789".slice(3,5)` 返回 `"34"`;`"0123456789".slice(-3)` 返回 `"789"`。 根据以上总结,我们可以编写回答,并按照要求生成相关问题。 注意:引用资料中有些地方描述不一致,我们以最准确的引用为准(例如引用[4]和引用[5])。同时,我们注意到引用[1]和引用[2]中有一些描述可能不准确,比如引用[1]说substr()的第一个参数表示从尾部开始截取(实际上只有负数才表示从尾部),所以我们会以多个引用中一致的部分为准。 现在,我们按照要求编写回答:</think>### JavaScript 字符截取方法详解 在 JavaScript 中,`substring()`、`substr()` 和 `slice()` 都是用于字符截取的方法,但它们的参数规则和行为有显著差异: #### 1. **`substring(startIndex [, endIndex])`** - **参数规则**: - `startIndex`:起始索引(包含) - `endIndex`:结束索引(不包含),可选 - **负数处理**:所有负数参数会被视为 `0` - **参数交换**:若 `startIndex > endIndex`,会自动交换位置 - **特点**: ```javascript "0123456789".substring(3, 5); // "34"(索引3-4) "0123456789".substring(5, 3); // "34"(自动交换参数) "0123456789".substring(-2, 3); // "012"(负数转0) ``` - **适用场景**:需忽略负数索引或自动处理参数顺序时[^2][^5]。 #### 2. **`substr(startIndex [, length])`** - **参数规则**: - `startIndex`:起始索引(支持负数,从末尾计算) - `length`:截取长度(若为负/0则返回空串) - **特点**: ```javascript "0123456789".substr(3, 5); // "34567"(从索引3截5位) "0123456789".substr(-3); // "789"(倒数第3位到末尾) "0123456789".substr(3, -1); // ""(长度负数返回空) ``` - **适用场景**:需从末尾截取或明确指定长度时[^1][^3][^5]。 #### 3. **`slice(startIndex [, endIndex])`** - **参数规则**: - `startIndex`/`endIndex`:均支持负数(从末尾计算) - **无参数交换**:若 `startIndex > endIndex`,返回空串 - **特点**: ```javascript "0123456789".slice(3, 5); // "34"(索引3-4) "0123456789".slice(-3, -1); // "78"(倒数第3到倒数第2) "0123456789".slice(5, 3); // ""(不交换参数) ``` - **适用场景**:需灵活使用负数索引或严格保持参数顺序时[^4][^5]。 --- ### **关键区别总结** | 方法 | 参数含义 | 负数处理 | 参数交换 | 空值条件 | |--------------|--------------------|------------------------|----------|------------------------| | `substring` | 起始索引, 结束索引 | 负数转0 | 自动交换 | 参数为负或无效范围 | | `substr` | 起始索引, 长度 | 支持负数(从末尾计算) | 无 | 长度≤0 | | `slice` | 起始索引, 结束索引 | 支持负数(从末尾计算) | 无 | 起始索引 > 结束索引 | > **通用规则**: > - 所有方法均不修改原字符串(返回新字符串)[^2][^4] > - 省略第二个参数时,默认截取字符串末尾[^3][^5] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值