Skip to content

String (字符串)

_.camelCase([string=''])

引入版本 3.0.0

将字符串转换为驼峰写法。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回驼峰写法的字符串。

示例

js
_.camelCase("Foo Bar");
// => 'fooBar'

_.camelCase("--foo-bar--");
// => 'fooBar'

_.camelCase("__FOO_BAR__");
// => 'fooBar'

_.capitalize([string=''])

引入版本 3.0.0

将字符串的首字母转换为大写,并将剩余字符转换为小写。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的字符串。

示例

js
_.capitalize("FRED");
// => 'Fred'

_.deburr([string=''])

引入版本 3.0.0

通过将 Latin-1 Supplement 和 Latin Extended-A 字母转换为基本的拉丁字母,并移除组合变音标记来清理字符串(即去除变音符号)。

参数

  • [string=''] (string): 要处理的字符串。

返回

  • (string): 返回清理后的字符串。

示例

js
_.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

示例

js
_.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): 返回转义后的字符串。

示例

js
_.escape("fred, barney, & pebbles");
// => 'fred, barney, &amp; pebbles'

_.escapeRegExp([string=''])

引入版本 3.0.0

转义 string 中的 RegExp 特殊字符 ^, $, \, ., *, +, ?, (, ), [, ], {, }, 和 |

参数

  • [string=''] (string): 要转义的字符串。

返回

  • (string): 返回转义后的字符串。

示例

js
_.escapeRegExp("[lodash](https://lodash.com/)");
// => '\[lodash\]\(https://lodash\.com/\)'

_.kebabCase([string=''])

引入版本 3.0.0

将字符串转换为短横线隔开的形式。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的字符串。

示例

js
_.kebabCase("Foo Bar");
// => 'foo-bar'

_.kebabCase("fooBar");
// => 'foo-bar'

_.kebabCase("__FOO_BAR__");
// => 'foo-bar'

_.lowerCase([string=''])

引入版本 4.0.0

将字符串转换为以空格分隔的小写单词。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的小写字符串。

示例

js
_.lowerCase("--Foo-Bar--");
// => 'foo bar'

_.lowerCase("fooBar");
// => 'foo bar'

_.lowerCase("__FOO_BAR__");
// => 'foo bar'

_.lowerFirst([string=''])

引入版本 4.0.0

将字符串的首字母转换为小写。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的字符串。

示例

js
_.lowerFirst("Fred");
// => 'fred'

_.lowerFirst("FRED");
// => 'fRED'

_.pad([string=''], [length=0], [chars=' '])

引入版本 3.0.0

如果 string 的长度小于 length,则在左右两侧填充字符。如果填充字符无法被均匀分割,则会被截断。

参数

  • [string=''] (string): 要填充的字符串。
  • [length=0] (number): 填充后的目标长度。
  • [chars=' '] (string): 用于填充的字符。

返回

  • (string): 返回填充后的字符串。

示例

js
_.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): 返回填充后的字符串。

示例

js
_.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): 返回填充后的字符串。

示例

js
_.padStart("abc", 6);
// => '   abc'

_.padStart("abc", 6, "_-");
// => '_-_abc'

_.padStart("abc", 3);
// => 'abc'

_.parseInt(string, [radix=10])

引入版本 1.1.0

string 转换为指定基数(radix)的整数。如果 radixundefined0,则通常使用基数 10,除非 string 是十六进制数,此时使用基数 16

注意: 此方法与 ES5 的 parseInt 实现保持一致。

参数

  • string (string): 要转换的字符串。
  • [radix=10] (number): 用于解释值的基数。

返回

  • (number): 返回转换后的整数。

示例

js
_.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): 返回重复后的字符串。

示例

js
_.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): 返回修改后的字符串。

示例

js
_.replace("Hi Fred", "Fred", "Barney");
// => 'Hi Barney'

_.snakeCase([string=''])

引入版本 3.0.0

将字符串转换为下划线隔开的形式。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的字符串。

示例

js
_.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): 返回字符串片段组成的数组。

示例

js
_.split("a-b-c", "-", 2);
// => ['a', 'b']

_.startCase([string=''])

引入版本 3.1.0

将字符串转换为每个单词首字母大写,单词之间用空格分隔。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的字符串。

示例

js
_.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

示例

js
_.startsWith("abc", "a");
// => true

_.startsWith("abc", "b");
// => false

_.startsWith("abc", "b", 1);
// => true

_.template([string=''], [options={}])

引入版本 0.1.0

创建一个编译后的模板函数,该函数可以:

  1. 在 "interpolate" 分隔符中插入数据属性。
  2. 在 "escape" 分隔符中对数据属性进行 HTML 转义。
  3. 在 "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): 返回编译后的模板函数。

示例

js
// 使用 "interpolate" 分隔符来输出编译后的字符串
var compiled = _.template("hello <%= user %>!");
compiled({ user: "fred" });
// => 'hello fred!'

// 使用 HTML "escape" 分隔符来转义数据属性
var compiled = _.template("<b><%- value %></b>");
compiled({ value: "<script>" });
// => '<b>&lt;script&gt;</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): 返回转换后的小写字符串。

示例

js
_.toLower("--Foo-Bar--");
// => '--foo-bar--'

_.toLower("fooBar");
// => 'foobar'

_.toLower("__FOO_BAR__");
// => '__foo_bar__'

_.toUpper([string=''])

引入版本 4.0.0

将字符串作为一个整体转换为大写,类似 String#toUpperCase

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的大写字符串。

示例

js
_.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): 返回处理后的字符串。

示例

js
_.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): 返回处理后的字符串。

示例

js
_.trimEnd("  abc  ");
// => '  abc'

_.trimEnd("-_-abc-_-", "_-");
// => '-_-abc'

_.trimStart([string=''], [chars=whitespace])

引入版本 4.0.0

从字符串的开头(左侧)移除空白字符或指定的字符。

参数

  • [string=''] (string): 要处理的字符串。
  • [chars=whitespace] (string): 要移除的字符。

返回

  • (string): 返回处理后的字符串。

示例

js
_.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): 返回截断后的字符串。

示例

js
_.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 实体 &amp;&lt;&gt;&quot;&#39; 转换为它们对应的字符。

注意: 不会反转义其他 HTML 实体。如需反转义其他实体,请使用第三方库,例如 he

参数

  • [string=''] (string): 要反转义的字符串。

返回

  • (string): 返回反转义后的字符串。

示例

js
_.unescape("fred, barney, &amp; pebbles");
// => 'fred, barney, & pebbles'

_.upperCase([string=''])

引入版本 4.0.0

将字符串转换为以空格分隔的大写单词。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的大写字符串。

示例

js
_.upperCase("--foo-bar");
// => 'FOO BAR'

_.upperCase("fooBar");
// => 'FOO BAR'

_.upperCase("__foo_bar__");
// => 'FOO BAR'

_.upperFirst([string=''])

引入版本 4.0.0

将字符串的首字母转换为大写。

参数

  • [string=''] (string): 要转换的字符串。

返回

  • (string): 返回转换后的字符串。

示例

js
_.upperFirst("fred");
// => 'Fred'

_.upperFirst("FRED");
// => 'FRED'

_.words([string=''], [pattern])

引入版本 3.0.0

将字符串拆分为一个包含其单词的数组。

参数

  • [string=''] (string): 要检查的字符串。
  • [pattern] (RegExp|string): 匹配单词的模式。

返回

  • (Array): 返回单词组成的数组。

示例

js
_.words("fred, barney, & pebbles");
// => ['fred', 'barney', 'pebbles']

_.words("fred, barney, & pebbles", /[^, ]+/g);
// => ['fred', 'barney', '&', 'pebbles']