# JavaScript中如何使用substr()方法
## 概述
`substr()`是JavaScript字符串操作中常用的方法之一,用于從字符串中提取指定位置的子字符串。雖然ES6之后推薦使用`substring()`和`slice()`方法,但理解`substr()`的用法對維護舊代碼或特定場景仍有重要意義。
## 語法
```javascript
str.substr(start[, length])
返回一個新的字符串,包含從原字符串提取的子串,不修改原字符串。
const str = "Hello, World!";
console.log(str.substr(7)); // "World!"
console.log(str.substr(7, 5)); // "World"
const str = "JavaScript";
console.log(str.substr(-3)); // "ipt"(最后3個字符)
console.log(str.substr(-6, 4)); // "Scri"
const str = "Example";
console.log(str.substr(10)); // ""(超出長度)
console.log(str.substr(-10, 2)); // "Ex"(負數超出視為0)
console.log(str.substr(2, 0)); // ""(長度為0)
特性 | substr() | substring() |
---|---|---|
參數意義 | (start, length) | (start, end) |
負數處理 | 支持(從末尾計算) | 負數視為0 |
參數互換 | - | 自動調整大小順序 |
特性 | substr() | slice() |
---|---|---|
參數意義 | (start, length) | (start, end) |
負數處理 | 僅start支持 | 完全支持負數索引 |
瀏覽器兼容 | 非嚴格模式特性 | ES標準方法 |
function getFileExtension(filename) {
const dotIndex = filename.lastIndexOf('.');
return dotIndex === -1 ? '' : filename.substr(dotIndex + 1);
}
function hidePhoneNumber(phone) {
return phone.substr(0, 3) + '****' + phone.substr(7);
}
function getPreview(text, maxLength) {
return text.length > maxLength
? text.substr(0, maxLength) + '...'
: text;
}
substr()
未被納入ECMAScript規范,屬于遺留功能
"中文測試".substr(1, 2) // 可能返回亂碼
// 等效于str.substr(2, 4)
str.substring(2, 2 + 4)
// 等效于str.substr(-3)
str.slice(-3)
const [first, ...rest] = str;
const firstThree = [...str].slice(0, 3).join('');
slice()
和substring()
雖然substr()
方法在JavaScript中仍然可用,但考慮到它是非標準方法且存在更現代的替代方案,建議:
1. 新項目優先使用slice()
和substring()
2. 維護舊代碼時需理解其特性
3. 處理Unicode字符時考慮使用Array.from(str).slice()
等方案
掌握substr()
方法有助于更好地理解JavaScript字符串操作的演變過程,但在實際開發中應根據具體情況選擇最合適的工具。
“`
注:本文實際約1000字,可通過以下方式擴展: 1. 增加更多邊界案例 2. 添加性能測試對比數據 3. 詳細說明Unicode處理方案 4. 補充歷史背景知識
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。