您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# JavaScript字符串的使用技巧有哪些
JavaScript作为前端开发的基石语言,字符串操作是日常编码中最频繁接触的部分之一。本文将深入探讨JavaScript字符串的21个核心使用技巧,涵盖从基础操作到高级应用的全方位知识,帮助开发者提升编码效率和代码质量。
## 一、字符串基础操作
### 1. 字符串声明与模板字面量
```javascript
// 传统引号声明
const str1 = '单引号';
const str2 = "双引号";
// 模板字面量(ES6+)
const name = 'Alice';
const greeting = `Hello, ${name}!`; // 支持插值表达式
console.log(greeting); // "Hello, Alice!"
模板字面量支持: - 多行字符串(保留换行符) - 表达式插值(${expression}) - 标签模板(高级用法)
const str = "JavaScript";
console.log(str.length); // 10
注意:length是属性不是方法,中文字符同样占1个长度单位
const str = "Hello";
console.log(str[1]); // "e" (ES5+)
console.log(str.charAt(1)); // "e" (传统方法)
console.log(str.at(-1)); // "o" (ES2022负索引支持)
const sentence = "The quick brown fox";
// 现代方法
console.log(sentence.includes("fox")); // true
console.log(sentence.startsWith("The")); // true
console.log(sentence.endsWith("fox")); // true
// 传统方法
console.log(sentence.indexOf("fox") !== -1); // true
const email = "user@example.com";
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log(regex.test(email)); // true
// 提取匹配内容
const text = "Price: $19.99";
const priceMatch = text.match(/\$\d+\.\d{2}/);
console.log(priceMatch[0]); // "$19.99"
const mixedCase = "JaVaScRiPt";
console.log(mixedCase.toLowerCase()); // "javascript"
console.log(mixedCase.toUpperCase()); // "JAVASCRIPT"
// 首字母大写
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}
console.log(capitalize("hello")); // "Hello"
// 数字转字符串
const num = 42;
console.log(num.toString()); // "42"
console.log(String(num)); // "42"
// 字符串转数字
const strNum = "3.14";
console.log(parseFloat(strNum)); // 3.14
console.log(Number(strNum)); // 3.14
console.log(+strNum); // 3.14
const obj = { name: "Alice", age: 25 };
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // "{"name":"Alice","age":25}"
const parsedObj = JSON.parse(jsonStr);
console.log(parsedObj.name); // "Alice"
const str1 = "Hello";
const str2 = "World";
// 传统方法
console.log(str1 + " " + str2); // "Hello World"
// 数组join方法
const parts = ["Hello", "World"];
console.log(parts.join(" ")); // "Hello World"
// 模板字面量
console.log(`${str1} ${str2}`); // "Hello World"
const str = "JavaScript";
console.log(str.slice(0, 4)); // "Java" (支持负索引)
console.log(str.substring(0,4)); // "Java" (不支持负索引)
console.log(str.substr(4,6)); // "Script" (已废弃)
const csv = "apple,orange,banana";
console.log(csv.split(",")); // ["apple", "orange", "banana"]
// 高级分割
const complexStr = "apple and orange or banana";
console.log(complexStr.split(/ and | or /));
// ["apple", "orange", "banana"]
const str = " Hello World! ";
console.log(str.trim()); // "Hello World!"
console.log(str.trimStart()); // "Hello World! "
console.log(str.trimEnd()); // " Hello World!"
const num = "5";
console.log(num.padStart(3, "0")); // "005"
console.log(num.padEnd(3, "*")); // "5**"
const url = "https://example.com/search?q=JavaScript 教程";
const encoded = encodeURIComponent(url);
console.log(encoded);
// "https%3A%2F%2Fexample.com%2Fsearch%3Fq%3DJavaScript%20%E6%95%99%E7%A8%8B"
console.log(decodeURIComponent(encoded)); // 原始URL
function highlight(strings, ...values) {
return strings.reduce((result, str, i) => {
return `${result}${str}<mark>${values[i] || ''}</mark>`;
}, '');
}
const name = "Alice";
const age = 25;
const html = highlight`Hello ${name}, you are ${age} years old`;
// "Hello <mark>Alice</mark>, you are <mark>25</mark> years old"
const str = "hello";
for (const char of str) {
console.log(char); // h, e, l, l, o
}
// 转为数组操作
console.log([...str].reverse().join("")); // "olleh"
// 本地化比较
console.log('ä'.localeCompare('z', 'de')); // -1 (德语中ä在z前)
console.log('ä'.localeCompare('z', 'sv')); // 1 (瑞典语中ä在z后)
// 数字格式化
const num = 123456.789;
console.log(new Intl.NumberFormat('de-DE').format(num)); // "123.456,789"
// 低效方式(频繁创建新字符串)
let result = "";
for (let i = 0; i < 1000; i++) {
result += i; // 每次迭代创建新字符串
}
// 高效方式(使用数组join)
const parts = [];
for (let i = 0; i < 1000; i++) {
parts.push(i);
}
result = parts.join("");
// 低效方式
function testString(str) {
return /^[a-z]+@[a-z]+\.[a-z]+$/.test(str);
}
// 高效方式
const emailRegex = /^[a-z]+@[a-z]+\.[a-z]+$/;
function testString(str) {
return emailRegex.test(str);
}
function escapeHTML(str) {
return str.replace(/[&<>'"]/g,
tag => ({
'&': '&',
'<': '<',
'>': '>',
"'": ''',
'"': '"'
}[tag]));
}
const userInput = '<script>alert("XSS")</script>';
document.body.innerHTML = escapeHTML(userInput);
// 输出为文本而非执行脚本
function isValidUsername(username) {
// 长度4-20,只允许字母数字和下划线
return /^[a-zA-Z0-9_]{4,20}$/.test(username);
}
console.log(isValidUsername("user_123")); // true
console.log(isValidUsername("admin!")); // false
JavaScript字符串处理看似简单,实则包含诸多技巧和陷阱。掌握本文介绍的21个核心技巧后,开发者能够:
随着ECMAScript标准的不断演进,字符串API仍在持续增强(如ES2023新增的toWellFormed()
方法)。建议开发者定期关注新特性,保持知识更新。
最佳实践建议:对于复杂字符串操作,优先考虑使用现代API而非自行实现;对性能敏感场景,注意避免不必要的字符串创建;处理用户输入时,始终进行适当的清理和验证。
”`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。