解析名称以使字符大写和小写
Parsing names to make characters uppper and lowercase
我正在使用这个帮手 class,它非常好,而且工作完美。基本上我把它插入到任何输入的 angular 反应形式中,我需要将每个单词的第一个字母大写,但是我在名称字段上使用它,例如 Derek O'Reilly 的一些名字在 2 个单词之间有一个 ',这个 class 无法处理(请参阅下面的代码)我不是这样的 javascript 高手,但我一直在尝试连接另一个这样的拆分,但没有运气拆分( '\'')
我试图获得的解决方案是让它将所有单词大写,而不管是否有 ' 非常感谢任何提示。
const words = value.split(' ');
words.forEach((word, index) => {
const lower = Transform.lowercase(word);
words[index] = Transform.upperLetter(lower.substr(0, 1)) + lower.substr(1);
});
return words.join(' ');
全帮手class在下面
class Case {
upper: string;
lower: string;
constructor(upper, lower) {
this.upper = upper;
this.lower = lower;
}
}
export class Transform {
static exceptions = [
new Case('ß', 'ß')
];
static lowercase = (value: string): string => {
const letters = value.split('');
letters.forEach((letter, index) => {
letters[index] = Transform.lowerLetter(letter);
});
return letters.join('');
}
static capitalize = (value: string): string => {
const words = value.split(' ');
words.forEach((word, index) => {
const lower = Transform.lowercase(word);
words[index] = Transform.upperLetter(lower.substr(0, 1)) + lower.substr(1);
});
return words.join(' ');
}
static upperLetter = (lower: string): string => {
const _case = Transform.exceptions.find(c => c.lower === lower);
return _case ? _case.upper : lower.toUpperCase();
}
static lowerLetter = (upper: string): string => {
const _case = Transform.exceptions.find(c => c.upper === upper);
return _case ? _case.lower : upper.toLowerCase();
}
}
尝试使用边框箭头 \b
:
let s = "hello wo'rld";
const resp = s.replace(/\b(.)/g, (a, p1) => p1.toUpperCase())
console.log(resp)
你可以试试这个。
const letters = value.split(/[ ']+/) // to split text either by space or by '
我正在使用这个帮手 class,它非常好,而且工作完美。基本上我把它插入到任何输入的 angular 反应形式中,我需要将每个单词的第一个字母大写,但是我在名称字段上使用它,例如 Derek O'Reilly 的一些名字在 2 个单词之间有一个 ',这个 class 无法处理(请参阅下面的代码)我不是这样的 javascript 高手,但我一直在尝试连接另一个这样的拆分,但没有运气拆分( '\'')
我试图获得的解决方案是让它将所有单词大写,而不管是否有 ' 非常感谢任何提示。
const words = value.split(' ');
words.forEach((word, index) => {
const lower = Transform.lowercase(word);
words[index] = Transform.upperLetter(lower.substr(0, 1)) + lower.substr(1);
});
return words.join(' ');
全帮手class在下面
class Case {
upper: string;
lower: string;
constructor(upper, lower) {
this.upper = upper;
this.lower = lower;
}
}
export class Transform {
static exceptions = [
new Case('ß', 'ß')
];
static lowercase = (value: string): string => {
const letters = value.split('');
letters.forEach((letter, index) => {
letters[index] = Transform.lowerLetter(letter);
});
return letters.join('');
}
static capitalize = (value: string): string => {
const words = value.split(' ');
words.forEach((word, index) => {
const lower = Transform.lowercase(word);
words[index] = Transform.upperLetter(lower.substr(0, 1)) + lower.substr(1);
});
return words.join(' ');
}
static upperLetter = (lower: string): string => {
const _case = Transform.exceptions.find(c => c.lower === lower);
return _case ? _case.upper : lower.toUpperCase();
}
static lowerLetter = (upper: string): string => {
const _case = Transform.exceptions.find(c => c.upper === upper);
return _case ? _case.lower : upper.toLowerCase();
}
}
尝试使用边框箭头 \b
:
let s = "hello wo'rld";
const resp = s.replace(/\b(.)/g, (a, p1) => p1.toUpperCase())
console.log(resp)
你可以试试这个。
const letters = value.split(/[ ']+/) // to split text either by space or by '