Angularjs 使用JavaScript将西里尔字母字符串大写

Angularjs 使用JavaScript将西里尔字母字符串大写,angularjs,regex,angular-filters,capitalize,Angularjs,Regex,Angular Filters,Capitalize,我正在制作一个AngularJS过滤器,它将每个单词的第一个字母大写。 它可以很好地处理a-zA-Z字母,但在我的例子中,我也使用西里尔字母,我想让它工作 var strLatin = "this is some string"; var strCyrillic = "това е някакъв низ"; var newLatinStr = strLatin.replace(/\b[\wа-яА-Я]/g, function(l){ return l.toUpperCase();

我正在制作一个AngularJS过滤器,它将每个单词的第一个字母大写。 它可以很好地处理a-zA-Z字母,但在我的例子中,我也使用西里尔字母,我想让它工作

var strLatin = "this is some string";
var strCyrillic = "това е някакъв низ";

var newLatinStr = strLatin.replace(/\b[\wа-яА-Я]/g, function(l){ 
    return l.toUpperCase();
});

var newCyrillicStr = strCyrillic.replace(/\b[\wа-яА-Я]/g, function(l){ 
    return l.toUpperCase();
});
这里有一些代码笔示例:

试试看:

function capitalizer(string) {
  return string.split(/\s/).map(function(item){
    return (item.charAt(0).toUpperCase() + item.slice(1))
  }).join(' ')
}

您需要一个自定义单词边界,可以使用分组来构建:

var strLatin=“这是一个字符串”;
var strcryrical=“ааааааъзз”;
var block=“\\w\\u0400-\\u04FF”;
var rx=new RegExp(“([^”+block+”]|^)([“+block+”]),“g”);
var newLatinStr=strLatin.replace(rx,函数($0,$1,$2){
返回$1+2.toUpperCase();
});
console.log(newLatinStr);
var newCyrillicStr=strcrcrylical.replace(rx,函数($0,$1,$2){
返回$1+2.toUpperCase();
});

console.log(newCyrillicStr)如果您使用Lodash,您可以使用而不是您自己的实现(他们通过将字符串拆分为单词,将每个单词的第一个字符大写,然后将它们重新连接在一起来实现)

否,这将在任何位置对字母进行大写。这里需要一个自定义的单词边界。我同意,这个例子返回的是
“titöСААЯЯКАддСбббз”
对不起,伙计们,1分钟)