我正在浏览lodash文档和其他Stack Overflow问题 - 虽然有are several native JavaScript ways of accomplishing this task,有没有办法可以使用纯粹的 lodash函数将字符串转换为标题大小写(或者至少是现有的原型功能)这样我就不必使用正则表达式或定义新函数了?
e.g。
This string ShouLD be ALL in title CASe
应该成为
This String Should Be All In Title Case
答案 0 :(得分:123)
这可以通过startCase
的小修改来完成:
_.startCase(_.toLower(str));
console.log(_.startCase(_.toLower("This string ShouLD be ALL in title CASe")));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>
答案 1 :(得分:27)
_.startCase(_.camelCase(str))
对于非用户生成的文本,这会处理比接受的答案更多的案例
> startCase(camelCase('myString'))
'My String'
> startCase(camelCase('my_string'))
'My String'
> startCase(camelCase('MY_STRING'))
'My String'
> startCase(camelCase('my string'))
'My String'
> startCase(camelCase('My string'))
'My String'
答案 2 :(得分:15)
使用lodash版本4。
_.upperFirst(_.toLower(str))
答案 3 :(得分:13)
'This string ShouLD be ALL in title CASe'
.split(' ')
.map(_.capitalize)
.join(' ');
答案 4 :(得分:3)
这是一种使用ONLY lodash方法而不使用内置方法的方法:
_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)
答案 5 :(得分:3)
这个问题的答案不一。
有些建议使用<input type="hidden" name="beautician<?php echo $data[0]; ?>[]" id="beautician">
<select name="beautician[<?php echo $data[0]; ?>]" id="beauty" onchange="pvalue()">
<option value="null">Select</option>
<?php
$query = "select id,title from beautician order by id";
$run = mysql_query($query);
while ($row = mysql_fetch_array($run)) {
$id = $row[0];
$name = $row[1];
?>
<option value="<?php echo $id; ?>"> <?php echo $name; ?> </option>
<?php } ?>
</select>
,而有些建议使用_.upperFirst
。
了解它们之间的区别。
i)_.startCase
将转换字符串的第一个字母,然后字符串可能是一个单词或多个单词,但字符串的唯一第一个字母将转换为大写。
_.upperFirst
输出:
_.upperFirst('jon doe')
查看文档https://lodash.com/docs/4.17.10#upperFirst
ii)Jon doe
将转换字符串中每个单词的首字母。
_.startCase
输出:
_.startCase('jon doe')
答案 6 :(得分:2)
这是在我自己的用例中测试的最干净、最灵活的实现。
import { capitalize, map } from "lodash";
const titleCase = (str) => map(str.split(" "), capitalize).join(" ");
// titleCase("ALFRED NÚÑEZ") => "Alfred Núñez"
// titleCase("alfred núñez") => "Alfred Núñez"
// titleCase("AlFReD nÚñEZ") => "Alfred Núñez"
// titleCase("-") => "-"
答案 7 :(得分:0)
var s = 'This string ShouLD be ALL in title CASe';
_.map(s.split(' '), (w) => _.capitalize(w.toLowerCase())).join(' ')
除非我错过了,否则lodash没有自己的大/小写方法。
答案 8 :(得分:0)
不像@ 4castle的回答那么简洁,但是描述性和充实性,尽管如此......
p = subprocess.Popen(cmd.split(' '), env=os.environ, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while(True):
log.info(p.stdout.readline())
if(p.poll() is not None):
break
&#13;
var basicTitleCase = _
.chain('This string ShouLD be ALL in title CASe')
.toLower()
.words()
.map(_.capitalize)
.join(' ')
.value()
console.log('Result:', basicTitleCase)
console.log('Exact Match:' , basicTitleCase === 'This String Should Be All In Title Case')
&#13;
答案 9 :(得分:0)
这是我的用例的另一个解决方案: &#34;魔鬼的骨干&#34;
简单地:
function titleCase (str) {
return _.map(str.split(' '), _.upperFirst).join(' ');
}
使用startCase会删除撇号,所以我不得不解决这个限制。其他解决方案似乎相当复杂。我喜欢这个,因为它干净,易于理解。
答案 10 :(得分:0)
下面的代码可以正常工作:
var str =“ TITLECASE”; _.startCase(str.toLowerCase());
答案 11 :(得分:0)
const titleCase = str =>
str
.split(' ')
.map(str => {
const word = str.toLowerCase()
return word.charAt(0).toUpperCase() + word.slice(1)
})
.join(' ')
您还可以分解地图功能来分隔单词
答案 12 :(得分:0)
这只能用lodash完成
properCase = string =>
words(string)
.map(capitalize)
.join(' ');
const proper = properCase('make this sentence propercase');
console.log(proper);
//would return 'Make This Sentence Propercase'
答案 13 :(得分:-3)
使用lodash 4,您可以使用_.capitalize()
_.capitalize('JOHN')
它返回'John'