虽然写一个大写函数是微不足道的,但是:
“你好”=> “你好” “你好”=> “你好”
如何使用Ramda JS使用无点样式编写它?
答案 0 :(得分:12)
会是这样的:
const capitalize = R.compose(
R.join(''),
R.juxt([R.compose(R.toUpper, R.head), R.tail])
);
Demo(在ramdajs.com REPL中)。
处理null
值的小修改
const capitalize = R.compose(
R.join(''),
R.juxt([R.compose(R.toUpper, R.head), R.tail])
);
const capitalizeOrNull = R.ifElse(R.equals(null), R.identity, capitalize);
答案 1 :(得分:11)
您可以将replace
部分应用于在第一个字符上运行toUpper
的正则表达式:
const capitalize = R.replace(/^./, R.toUpper);
答案 2 :(得分:6)
我建议使用R.lens
:
const char0 = R.lens(R.head, R.useWith(R.concat, [R.identity, R.tail]));
R.over(char0, R.toUpper, 'ramda');
// => 'Ramda'
答案 3 :(得分:2)
我为有兴趣的人准备了一些快速而肮脏的基准。看起来@ lax4mike是提供答案中最快的(尽管更简单,非无点str[0].toUpperCase() + str.slice(1)
更快[并且也不是OP所要求的,所以这没有实际意义]。
https://jsfiddle.net/960q1e31/(你需要打开控制台并运行小提琴才能看到结果)