用于将字符串中的单词大写的管道错误
Error in Pipe Used to Capitalize Words in a String
我正在尝试在我的 Angular 应用程序中创建一个更强大的大写管道。最初我的大写管道只需要将单个单词大写。现在我遇到了可以有多个单词的情况。这就是我的管道现在处理这种情况的样子:
transform(input: any) {
if (input !== null) {
const stringArr = input.split(' ');
let result = ' ';
const cap = stringArr.length;
for (let x = 0; x < cap; x++) {
stringArr[x].toLowerCase();
if (x === cap - 1) {
result += stringArr[x].substring(0, 1).toUpperCase() + stringArr[x].substring(1);
} else {
result += stringArr[x].substring(0, 1).toUpperCase() + stringArr[x].substring(1) + ' ';
}
}
return result;
}
}
但我在控制台中收到此错误:
ORIGINAL EXCEPTION: input.split is not a function
关于这里的内容有什么想法吗?
String#split
函数只能用于字符串,否则您将收到 ORIGINAL EXCEPTION: input.split is not a function
错误。
您必须设置一个条件,即给定元素必须是 string
,如果不是,则必须将其更改(如果可能)为 string
或忽略。
if (input !== null && typeof input == 'string') {
input.split(' ')
} else {
input.join().split(' ')
}
我正在尝试在我的 Angular 应用程序中创建一个更强大的大写管道。最初我的大写管道只需要将单个单词大写。现在我遇到了可以有多个单词的情况。这就是我的管道现在处理这种情况的样子:
transform(input: any) {
if (input !== null) {
const stringArr = input.split(' ');
let result = ' ';
const cap = stringArr.length;
for (let x = 0; x < cap; x++) {
stringArr[x].toLowerCase();
if (x === cap - 1) {
result += stringArr[x].substring(0, 1).toUpperCase() + stringArr[x].substring(1);
} else {
result += stringArr[x].substring(0, 1).toUpperCase() + stringArr[x].substring(1) + ' ';
}
}
return result;
}
}
但我在控制台中收到此错误:
ORIGINAL EXCEPTION: input.split is not a function
关于这里的内容有什么想法吗?
String#split
函数只能用于字符串,否则您将收到 ORIGINAL EXCEPTION: input.split is not a function
错误。
您必须设置一个条件,即给定元素必须是 string
,如果不是,则必须将其更改(如果可能)为 string
或忽略。
if (input !== null && typeof input == 'string') {
input.split(' ')
} else {
input.join().split(' ')
}