这是我正在使用的语法:
.split(' ')
.join('+')
.replace(/([A-Z])/g, ' $1')
.replace(/^./, function(str) {
return str.toUpperCase();
})
.replace(/\++/g, '')
.replace(/asdf/g, ';')
.replace(';', '')
.replace(' ', '')
.split(';');
此代码帮助我将'camelCase'变成'Camel Case'。我还尝试做其他各种事情,比如通过'+'用一个空格替换多余的空间。我也用'asdf'代替;然后切开第一个;和第一个空间。
问题:与此同时,它打破了我的德国特色,即ÄÖÜ。在我的输出中将它们变成问号。
I BELIEVE IT GENERATES OUTPUT LIKE THIS:
input: ... Oberbayern:Kreis EichstättAsdf ...
output: ... Oberbayern: Kreis Eichst�tt; Asdf ...
请帮帮我。
答案 0 :(得分:4)
您可以尝试这样的事情:
<强>逻辑强>
注意:正如T.J. Crowder所指出的,如果可以的话,最好使用string.toLocaleUpperCase。
function seperateCamelCaseWords(a) {
var regex = /([a-z])(?=[A-Z])/g;
a = a.replace(regex, "$1 ");
a = upper(a.charAt(0)) + a.substring(1)
console.log(a)
return a;
}
function upper(str){
return str.toLocaleUpperCase ? str.toLocaleUpperCase() : str.toUpperCase();
}
var a = "thisIsTestString";
var b = "kreisEichstätt"
seperateCamelCaseWords(a);
seperateCamelCaseWords(b);
您还可以使用以下逻辑来匹配除空格后跟任何字符的任何字符。
function seperateCamelCaseWords(a) {
var regex = /([^ ])(?=[A-Z])/g;
a = a.replace(regex, "$1 ");
a = upper(a.charAt(0)) + a.substring(1)
console.log(a)
return a;
}
function upper(str){
return str.toLocaleUpperCase ? str.toLocaleUpperCase() : str.toUpperCase();
}
seperateCamelCaseWords("thisIsATestString");
seperateCamelCaseWords("kreisEichstätt");
seperateCamelCaseWords("kreisäEichstätt")