Skip to content

Lodash - 字符串

Lodash 提供了各种实用的函数用于常见的字符串操作,补充了 JavaScript 内置的 String 方法。这些函数通常为更改大小写、修剪(trimming)、填充(padding)、转义 HTML 以及创建模板等任务提供了方便的解决方案。

尽管像 toLowerCase()、toUpperCase()、trim()、padStart()、padEnd()、startsWith()、endsWith()、includes()、replace() 和模板字面量(template literals)等原生方法可以满足许多基本需求,Lodash 提供了有用的补充。

方法与语法描述
camelCase
_.camelCase([string=”])
将 string 转换为驼峰式(camel case)(例如,‘foo bar’ -> ‘fooBar’)。
kebabCase
_.kebabCase([string=”])
将 string 转换为烤肉串式(kebab case)(例如,‘Foo Bar’ -> ‘foo-bar’)。
snakeCase
_.snakeCase([string=”])
将 string 转换为蛇形(snake case)(例如,‘Foo Bar’ -> ‘foo_bar’)。
startCase
_.startCase([string=”])
将 string 转换为起始大写式(start case)(例如,‘—foo-bar—’ -> ‘Foo Bar’)。将每个单词的第一个字母大写。
capitalize
_.capitalize([string=”])
将 string 的第一个字符转换为大写,其余转换为小写。
lowerCase
_.lowerCase([string=”])
将 string 作为空格分隔的单词转换为小写。
lowerFirst
_.lowerFirst([string=”])
将 string 的第一个字符转换为小写。
upperCase
_.upperCase([string=”])
将 string 作为空格分隔的单词转换为大写。
upperFirst
_.upperFirst([string=”])
将 string 的第一个字符转换为大写。
pad
_.pad([string=”], [length=0], [chars=’ ’])
在 string 短于 length 时,在左右两边填充。如果填充字符无法均匀分配,则会被截断。
padEnd
_.padEnd([string=”], [length=0], [chars=’ ’])
在 string 短于 length 时,在右边填充。原生等效方法:String.prototype.padEnd()。
padStart
_.padStart([string=”], [length=0], [chars=’ ’])
在 string 短于 length 时,在左边填充。原生等效方法:String.prototype.padStart()。
trim
_.trim([string=”], [chars=whitespace])
移除 string 开头和结尾的空白字符或指定字符。原生等效方法:String.prototype.trim()(用于空白字符)。
trimEnd
_.trimEnd([string=”], [chars=whitespace])
移除结尾的空白字符或指定字符。原生等效方法:String.prototype.trimEnd() / trimRight()。
trimStart
_.trimStart([string=”], [chars=whitespace])
移除开头的空白字符或指定字符。原生等效方法:String.prototype.trimStart() / trimLeft()。
repeat
_.repeat([string=”], [n=1])
将给定的 string 重复 n 次。原生等效方法:String.prototype.repeat()。
split
_.split([string=”], separator, [limit])
按 separator 分割 string。原生等效方法:String.prototype.split()。
escape
_.escape([string=”])
将 string 中的字符 ’&’、’<’、’>’、’”’ 和 ”’” 转换为对应的 HTML 实体。在显示用户生成内容时,用于防止 XSS 攻击。
unescape
_.unescape([string=”])
_.escape 的反向操作;将 HTML 实体 ’&’、’<’、’>’、’”’ 和 ''' 转换回其字符。
escapeRegExp
_.escapeRegExp([string=”])
转义 string 中的正则表达式特殊字符 ^$.*+?()[]{}|。在需要在正则表达式模式中匹配字面量字符时很有用。
template
_.template([string=”], [options={}])
创建一个编译好的模板函数,可以将数据属性插入到字符串中。提供了比原生模板字面量更多的功能,例如不同的分隔符和显式编译。
truncate
_.truncate([string=”], [options={}])
如果 string 长于给定的最大 length,则截断 string。截断字符串的最后字符会被省略字符串替换,默认为 ”…”。选项允许自定义长度、省略字符串和分隔符。
words
_.words([string=”], [pattern])
将 string 分割成其单词组成的数组。可以使用自定义正则表达式模式。
deburr
_.deburr([string=”])
通过将 Latin-1 Supplement 和 Latin Extended-A 字母转换为基本拉丁字母并移除组合音标(diacritical marks)来去除 string 中的发音符号(例如,‘déjà vu’ -> ‘deja vu’)。
parseInt
_.parseInt(string, [radix=10])
将 string 转换为指定基数(radix)的整数。行为类似于原生 parseInt,但通过先将非字符串值转换为字符串,能更优雅地处理它们。始终建议指定基数。
import _ from 'lodash-es';
const messyString = '--foo bar BAZ--';
const urlSlug = _.kebabCase(messyString);
// urlSlug: 'foo-bar-baz'
const variableName = _.camelCase(messsyString);
// variableName: 'fooBarBaz'
const title = _.startCase(_.lowerCase(messyString));
// title: 'Foo Bar Baz'
const user = { name: 'Alice', id: 123 };
const templateString = 'User <%- name %> (ID: <%- id %>) logged in.';
// Compile the template
const compiled = _.template(templateString);
// Execute with data
const message = compiled(user);
// message: 'User Alice (ID: 123) logged in.'
const longText = 'This is a very long string that needs truncation.';
const truncated = _.truncate(longText, { 'length': 20 });
// truncated: 'This is a very long...'
console.log('URL Slug:', urlSlug);
console.log('Variable Name:', variableName);
console.log('Title:', title);
console.log('Template Message:', message);
console.log('Truncated Text:', truncated);

Lodash 字符串方法在标准化用户输入、生成 slug 或标识符、格式化文本以供显示以及基本的模板化任务中特别方便。