# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。