开发者问题收集

处理字符串原型中的空类型

2021-08-31
410

我有一个函数

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
}

我需要调整它以返回“”(空字符串)

"".capitalize must return ""
undefined.capitalize must return ""
null.capitalize must return ""

我尝试过

String.prototype.capitalize = function() {
    return this.charAt(0).toUpperCase() + this.slice(1) || "";
}

但对于未定义,我收到错误:

Uncaught TypeError: Cannot read property 'capitalize' of undefined at <anonymous>:1:6
3个回答

null 和 undefined 不是字符串类型,因此您总是会得到类型错误。您的方法行不通。但您可以创建一个函数来执行此操作

function capitalize(str){
    if(str === null || str === undefined ){return ""}
    else {return str = str[0].toUpperCase() + str.slice(1)}
}

let str1 = null
let str2 = undefined
let str3 = "abc"
console.log(capitalize(str1))
console.log(capitalize(str2))
console.log(capitalize(str3))
J_K
2021-08-31

我发现这是一个有用的答案。

function capitalize(l){return null==l?"":null==l?"":l.charAt(0).toUpperCase()+l.slice(1)}
Code Guy
2021-09-01

如果 this.length 大于 0,则返回 ""

String.prototype.capitalize = function() {
  return (this.length > 0) ? this.charAt(0).toUpperCase() + this.slice(1) : "";
}

console.log(typeof "test string".capitalize(), ":", "test string".capitalize());
console.log(typeof "".capitalize(), ":", "".capitalize());
chrwahl
2021-08-31