0
点赞
收藏
分享

微信扫一扫

JavaScript字符串截取方法

在 JavaScript 中,有多种方法可以截取字符串。以下是常用的字符串截取方法:

1. substring()

let str = "Hello World";

// 从索引2开始到结束
console.log(str.substring(2)); // "llo World"

// 从索引2到索引7(不包括7)
console.log(str.substring(2, 7)); // "llo W"

// 如果开始索引大于结束索引,会自动交换
console.log(str.substring(7, 2)); // "llo W"

// 负值会被当作0
console.log(str.substring(-3)); // "Hello World"

2. slice()

let str = "Hello World";

// 从索引2开始到结束
console.log(str.slice(2)); // "llo World"

// 从索引2到索引7(不包括7)
console.log(str.slice(2, 7)); // "llo W"

// 支持负数索引(从末尾开始计算)
console.log(str.slice(-5)); // "World"
console.log(str.slice(2, -3)); // "llo Wo"

// 开始索引大于结束索引返回空字符串
console.log(str.slice(7, 2)); // ""

3. substr() - ⚠️ 已废弃

let str = "Hello World";

// 从索引2开始,截取5个字符
console.log(str.substr(2, 5)); // "llo W"

// 只指定开始位置
console.log(str.substr(2)); // "llo World"

// 支持负数索引
console.log(str.substr(-5)); // "World"

4. split() + join()

let str = "Hello World";

// 分割成数组后取前5个字符再拼接
let result = str.split('').slice(0, 5).join('');
console.log(result); // "Hello"

5. 正则表达式 match()

let str = "Hello World";

// 匹配前5个字符
let result = str.match(/^.{5}/);
console.log(result[0]); // "Hello"

// 匹配从第6个字符开始的所有字符
let result2 = str.match(/(?<=.{6}).*/);
console.log(result2[0]); // "World"

实际应用示例

// 截取文件名(去掉扩展名)
let filename = "document.pdf";
let nameWithoutExt = filename.substring(0, filename.lastIndexOf('.'));
console.log(nameWithoutExt); // "document"

// 截取URL的域名部分
let url = "https://www.example.com/path";
let domain = url.substring(url.indexOf('//') + 2, url.indexOf('/', 8));
console.log(domain); // "www.example.com"

// 安全截取文本(防止超出范围)
function safeSubstring(str, start, length) {
    start = Math.max(0, start);
    length = Math.min(length, str.length - start);
    return str.substring(start, start + length);
}

let text = "Hello";
console.log(safeSubstring(text, 2, 10)); // "llo"

方法对比总结

方法

参数

负值处理

返回值

是否推荐

substring(start, end)

开始和结束索引

负值转为0

截取字符串

✅ 推荐

slice(start, end)

开始和结束索引

支持负索引

截取字符串

✅ 推荐

substr(start, length)

开始位置和长度

支持负索引

截取字符串

❌ 已废弃

split().slice().join()

灵活

支持各种操作

截取字符串

⚠️ 复杂场景

推荐使用 substring()slice(),其中 slice() 在处理负索引时更加方便。

举报

相关推荐

0 条评论