String (字符串)
_.camelCase([string=''])
引入版本 3.0.0
将字符串转换为驼峰写法。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回驼峰写法的字符串。
示例
_.camelCase("Foo Bar");
// => 'fooBar'
_.camelCase("--foo-bar--");
// => 'fooBar'
_.camelCase("__FOO_BAR__");
// => 'fooBar'_.capitalize([string=''])
引入版本 3.0.0
将字符串的首字母转换为大写,并将剩余字符转换为小写。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的字符串。
示例
_.capitalize("FRED");
// => 'Fred'_.deburr([string=''])
引入版本 3.0.0
通过将 Latin-1 Supplement 和 Latin Extended-A 字母转换为基本的拉丁字母,并移除组合变音标记来清理字符串(即去除变音符号)。
参数
- [string='']
(string): 要处理的字符串。
返回
- (string): 返回清理后的字符串。
示例
_.deburr("déjà vu");
// => 'deja vu'_.endsWith([string=''], [target], [position=string.length])
引入版本 3.0.0
检查字符串 string 是否以给定的 target 字符串结尾。
参数
- [string='']
(string): 要检查的字符串。 - [target]
(string): 要搜索的字符串。 - [position=string.length]
(number): 检索的结束位置。
返回
- (boolean): 如果字符串以 target 结尾返回
true,否则返回false。
示例
_.endsWith("abc", "c");
// => true
_.endsWith("abc", "b");
// => false
_.endsWith("abc", "b", 2);
// => true_.escape([string=''])
引入版本 0.1.0
将字符串中的 &、<、>、" 和 ' 字符转换为它们对应的 HTML 实体。
注意:
- 不会转义其他字符。如需转义其他字符,请使用第三方库,例如 he。
- 尽管
>字符为了对称性被转义了,但>和/实际上在 HTML 中不需要转义,且在标签内或未加引号的属性值中没有特殊含义。详情请参阅 Mathias Bynens 的文章(参见 "semi-related fun fact" 部分)。 - 在处理 HTML 时,你应该始终 给属性值加引号 以减少 XSS 攻击向量。
参数
- [string='']
(string): 要转义的字符串。
返回
- (string): 返回转义后的字符串。
示例
_.escape("fred, barney, & pebbles");
// => 'fred, barney, & pebbles'_.escapeRegExp([string=''])
引入版本 3.0.0
转义 string 中的 RegExp 特殊字符 ^, $, \, ., *, +, ?, (, ), [, ], {, }, 和 |。
参数
- [string='']
(string): 要转义的字符串。
返回
- (string): 返回转义后的字符串。
示例
_.escapeRegExp("[lodash](https://lodash.com/)");
// => '\[lodash\]\(https://lodash\.com/\)'_.kebabCase([string=''])
引入版本 3.0.0
将字符串转换为短横线隔开的形式。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的字符串。
示例
_.kebabCase("Foo Bar");
// => 'foo-bar'
_.kebabCase("fooBar");
// => 'foo-bar'
_.kebabCase("__FOO_BAR__");
// => 'foo-bar'_.lowerCase([string=''])
引入版本 4.0.0
将字符串转换为以空格分隔的小写单词。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的小写字符串。
示例
_.lowerCase("--Foo-Bar--");
// => 'foo bar'
_.lowerCase("fooBar");
// => 'foo bar'
_.lowerCase("__FOO_BAR__");
// => 'foo bar'_.lowerFirst([string=''])
引入版本 4.0.0
将字符串的首字母转换为小写。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的字符串。
示例
_.lowerFirst("Fred");
// => 'fred'
_.lowerFirst("FRED");
// => 'fRED'_.pad([string=''], [length=0], [chars=' '])
引入版本 3.0.0
如果 string 的长度小于 length,则在左右两侧填充字符。如果填充字符无法被均匀分割,则会被截断。
参数
- [string='']
(string): 要填充的字符串。 - [length=0]
(number): 填充后的目标长度。 - [chars=' ']
(string): 用于填充的字符。
返回
- (string): 返回填充后的字符串。
示例
_.pad("abc", 8);
// => ' abc '
_.pad("abc", 8, "_-");
// => '_-abc_-_'
_.pad("abc", 3);
// => 'abc'_.padEnd([string=''], [length=0], [chars=' '])
引入版本 4.0.0
如果 string 的长度小于 length,则在右侧填充字符。如果填充字符超出长度,则会被截断。
参数
- [string='']
(string): 要填充的字符串。 - [length=0]
(number): 填充后的目标长度。 - [chars=' ']
(string): 用于填充的字符。
返回
- (string): 返回填充后的字符串。
示例
_.padEnd("abc", 6);
// => 'abc '
_.padEnd("abc", 6, "_-");
// => 'abc_-_'
_.padEnd("abc", 3);
// => 'abc'_.padStart([string=''], [length=0], [chars=' '])
引入版本 4.0.0
如果 string 的长度小于 length,则在左侧填充字符。如果填充字符超出长度,则会被截断。
参数
- [string='']
(string): 要填充的字符串。 - [length=0]
(number): 填充后的目标长度。 - [chars=' ']
(string): 用于填充的字符。
返回
- (string): 返回填充后的字符串。
示例
_.padStart("abc", 6);
// => ' abc'
_.padStart("abc", 6, "_-");
// => '_-_abc'
_.padStart("abc", 3);
// => 'abc'_.parseInt(string, [radix=10])
引入版本 1.1.0
将 string 转换为指定基数(radix)的整数。如果 radix 是 undefined 或 0,则通常使用基数 10,除非 string 是十六进制数,此时使用基数 16。
注意: 此方法与 ES5 的 parseInt 实现保持一致。
参数
- string
(string): 要转换的字符串。 - [radix=10]
(number): 用于解释值的基数。
返回
- (number): 返回转换后的整数。
示例
_.parseInt("08");
// => 8
_.map(["6", "08", "10"], _.parseInt);
// => [6, 8, 10]_.repeat([string=''], [n=1])
引入版本 3.0.0
重复给定字符串 n 次。
参数
- [string='']
(string): 要重复的字符串。 - [n=1]
(number): 重复的次数。
返回
- (string): 返回重复后的字符串。
示例
_.repeat("*", 3);
// => '***'
_.repeat("abc", 2);
// => 'abcabc'
_.repeat("abc", 0);
// => ''_.replace([string=''], pattern, replacement)
引入版本 4.0.0
替换字符串中匹配 pattern 的部分为 replacement。
注意: 此方法基于 String#replace。
参数
- [string='']
(string): 要修改的字符串。 - pattern
(RegExp|string): 要匹配的内容。 - replacement
(Function|string): 替换的内容。
返回
- (string): 返回修改后的字符串。
示例
_.replace("Hi Fred", "Fred", "Barney");
// => 'Hi Barney'_.snakeCase([string=''])
引入版本 3.0.0
将字符串转换为下划线隔开的形式。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的字符串。
示例
_.snakeCase("Foo Bar");
// => 'foo_bar'
_.snakeCase("fooBar");
// => 'foo_bar'
_.snakeCase("--FOO-BAR--");
// => 'foo_bar'_.split([string=''], separator, [limit])
引入版本 4.0.0
根据 separator(分隔符)拆分字符串。
注意: 此方法基于 String#split。
参数
- [string='']
(string): 要拆分的字符串。 - separator
(RegExp|string): 拆分的分隔符。 - [limit]
(number): 限制返回结果的数量。
返回
- (Array): 返回字符串片段组成的数组。
示例
_.split("a-b-c", "-", 2);
// => ['a', 'b']_.startCase([string=''])
引入版本 3.1.0
将字符串转换为每个单词首字母大写,单词之间用空格分隔。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的字符串。
示例
_.startCase("--foo-bar--");
// => 'Foo Bar'
_.startCase("fooBar");
// => 'Foo Bar'
_.startCase("__FOO_BAR__");
// => 'Foo Bar'_.startsWith([string=''], [target], [position=0])
引入版本 3.0.0
检查字符串 string 是否以给定的 target 字符串开头。
参数
- [string='']
(string): 要检查的字符串。 - [target]
(string): 要搜索的字符串。 - [position=0]
(number): 检索的起始位置。
返回
- (boolean): 如果字符串以
target开头返回true,否则返回false。
示例
_.startsWith("abc", "a");
// => true
_.startsWith("abc", "b");
// => false
_.startsWith("abc", "b", 1);
// => true_.template([string=''], [options={}])
引入版本 0.1.0
创建一个编译后的模板函数,该函数可以:
- 在 "interpolate" 分隔符中插入数据属性。
- 在 "escape" 分隔符中对数据属性进行 HTML 转义。
- 在 "evaluate" 分隔符中执行 JavaScript 代码。
数据属性可以在模板中作为自由变量访问。如果提供了 options 对象,它的设置优先于 _.templateSettings 的值。
参数
- [string='']
(string): 模板字符串。 - [options={}]
(Object): 选项对象。 - [options.escape=_.templateSettings.escape]
(RegExp): HTML "escape" 分隔符。 - [options.evaluate=_.templateSettings.evaluate]
(RegExp): "evaluate" 分隔符。 - [options.imports=_.templateSettings.imports]
(Object): 导入到模板中的对象(作为自由变量)。 - **[options.interpolate=_.templateSettings.interpolate]
**(RegExp)`: "interpolate" 分隔符。 - [options.sourceURL='lodash.templateSources[n]']
(string): 编译模板的 sourceURL。 - [options.variable='obj']
(string): 数据对象的变量名。
返回
- (Function): 返回编译后的模板函数。
示例
// 使用 "interpolate" 分隔符来输出编译后的字符串
var compiled = _.template("hello <%= user %>!");
compiled({ user: "fred" });
// => 'hello fred!'
// 使用 HTML "escape" 分隔符来转义数据属性
var compiled = _.template("<b><%- value %></b>");
compiled({ value: "<script>" });
// => '<b><script></b>'
// 使用 "evaluate" 分隔符来执行 JavaScript 和生成 HTML
var compiled = _.template(
"<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>"
);
compiled({ users: ["fred", "barney"] });
// => '<li>fred</li><li>barney</li>'
// 在 "evaluate" 分隔符中使用内部的 `print` 函数
var compiled = _.template('<% print("hello " + user); %>!');
compiled({ user: "barney" });
// => 'hello barney!'
// 使用 ES 模板字符串分隔符作为 "interpolate" 分隔符
// 或者通过替换 "interpolate" 分隔符来禁用 ES 模板支持
var compiled = _.template("hello ${ user }!");
compiled({ user: "pebbles" });
// => 'hello pebbles!'
// 使用反斜杠将分隔符视为纯文本
var compiled = _.template('<%= "\\<%- value %\\>" %>');
compiled({ value: "ignored" });
// => '<%- value %>'
// 使用 `imports` 选项将 `jQuery` 作为 `jq` 导入
var text = "<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>";
var compiled = _.template(text, { imports: { jq: jQuery } });
compiled({ users: ["fred", "barney"] });
// => '<li>fred</li><li>barney</li>'
// 使用 `sourceURL` 选项指定模板的自定义 sourceURL
var compiled = _.template("hello <%= user %>!", {
sourceURL: "/basic/greeting.jst",
});
compiled(data);
// => 在开发工具的 Sources 面板或 Web Inspector 的 Resources 面板中找到 "greeting.jst"
// 使用 `variable` 选项确保数据对象在编译模板中不使用 `with` 语句
var compiled = _.template("hi <%= data.user %>!", { variable: "data" });
compiled.source;
// => function(data) {
// var __t, __p = '';
// __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
// return __p;
// }
// 使用自定义模板分隔符
_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
var compiled = _.template("hello {{ user }}!");
compiled({ user: "mustache" });
// => 'hello mustache!'_.toLower([string=''])
引入版本 4.0.0
将字符串作为一个整体转换为小写,类似 String#toLowerCase。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的小写字符串。
示例
_.toLower("--Foo-Bar--");
// => '--foo-bar--'
_.toLower("fooBar");
// => 'foobar'
_.toLower("__FOO_BAR__");
// => '__foo_bar__'_.toUpper([string=''])
引入版本 4.0.0
将字符串作为一个整体转换为大写,类似 String#toUpperCase。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的大写字符串。
示例
_.toUpper("--foo-bar--");
// => '--FOO-BAR--'
_.toUpper("fooBar");
// => 'FOOBAR'
_.toUpper("__foo_bar__");
// => '__FOO_BAR__'_.trim([string=''], [chars=whitespace])
引入版本 3.0.0
从字符串的两端移除空白字符或指定的字符。
参数
- [string='']
(string): 要处理的字符串。 - [chars=whitespace]
(string): 要移除的字符。
返回
- (string): 返回处理后的字符串。
示例
_.trim(" abc ");
// => 'abc'
_.trim("-_-abc-_-", "_-");
// => 'abc'
_.map([" foo ", " bar "], _.trim);
// => ['foo', 'bar']_.trimEnd([string=''], [chars=whitespace])
引入版本 4.0.0
从字符串的尾部(右侧)移除空白字符或指定的字符。
参数
- [string='']
(string): 要处理的字符串。 - [chars=whitespace]
(string): 要移除的字符。
返回
- (string): 返回处理后的字符串。
示例
_.trimEnd(" abc ");
// => ' abc'
_.trimEnd("-_-abc-_-", "_-");
// => '-_-abc'_.trimStart([string=''], [chars=whitespace])
引入版本 4.0.0
从字符串的开头(左侧)移除空白字符或指定的字符。
参数
- [string='']
(string): 要处理的字符串。 - [chars=whitespace]
(string): 要移除的字符。
返回
- (string): 返回处理后的字符串。
示例
_.trimStart(" abc ");
// => 'abc '
_.trimStart("-_-abc-_-", "_-");
// => 'abc-_-'_.truncate([string=''], [options={}])
引入版本 4.0.0
如果字符串超出了给定的最大长度,则将其截断。被截断的字符串的结尾会被替换为省略字符串(默认为 "...")。
参数
- [string='']
(string): 要截断的字符串。 - [options={}]
(Object): 选项对象。 - [options.length=30]
(number): 允许的最大字符串长度。 - [options.omission='...']
(string): 用于表示文本被省略的字符串。 - [options.separator]
(RegExp|string): 截断的分隔符模式。
返回
- (string): 返回截断后的字符串。
示例
_.truncate("hi-diddly-ho there, neighborino");
// => 'hi-diddly-ho there, neighbo...'
_.truncate("hi-diddly-ho there, neighborino", {
length: 24,
separator: " ",
});
// => 'hi-diddly-ho there,...'
_.truncate("hi-diddly-ho there, neighborino", {
length: 24,
separator: /,? +/,
});
// => 'hi-diddly-ho there...'
_.truncate("hi-diddly-ho there, neighborino", {
omission: " [...]",
});
// => 'hi-diddly-ho there, neig [...]'_.unescape([string=''])
引入版本 0.6.0
_.escape 的反向操作;将字符串中的 HTML 实体 &、<、>、" 和 ' 转换为它们对应的字符。
注意: 不会反转义其他 HTML 实体。如需反转义其他实体,请使用第三方库,例如 he。
参数
- [string='']
(string): 要反转义的字符串。
返回
- (string): 返回反转义后的字符串。
示例
_.unescape("fred, barney, & pebbles");
// => 'fred, barney, & pebbles'_.upperCase([string=''])
引入版本 4.0.0
将字符串转换为以空格分隔的大写单词。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的大写字符串。
示例
_.upperCase("--foo-bar");
// => 'FOO BAR'
_.upperCase("fooBar");
// => 'FOO BAR'
_.upperCase("__foo_bar__");
// => 'FOO BAR'_.upperFirst([string=''])
引入版本 4.0.0
将字符串的首字母转换为大写。
参数
- [string='']
(string): 要转换的字符串。
返回
- (string): 返回转换后的字符串。
示例
_.upperFirst("fred");
// => 'Fred'
_.upperFirst("FRED");
// => 'FRED'_.words([string=''], [pattern])
引入版本 3.0.0
将字符串拆分为一个包含其单词的数组。
参数
- [string='']
(string): 要检查的字符串。 - [pattern]
(RegExp|string): 匹配单词的模式。
返回
- (Array): 返回单词组成的数组。
示例
_.words("fred, barney, & pebbles");
// => ['fred', 'barney', 'pebbles']
_.words("fred, barney, & pebbles", /[^, ]+/g);
// => ['fred', 'barney', '&', 'pebbles']