我有一个多行文本字段,用户可以输入例如“märzmärz”。 现在我想将这两个词改成“MärzMärz”。
我尝试了这段代码(在自定义按键脚本中):
var z=event.value.replace(/[\w\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff]+/igm, function(m){ return m.toLowerCase();});
var x=z.toLowerCase();
var y = x.replace(/\b./igm, function(m){ return m.toUpperCase();});
event.value = y;
结果是:“MäRzMäRz”
如何编辑脚本,结果如下:“MärzMärz”?
由于
答案 0 :(得分:0)
如果它始终是第一个字母,那么你就不需要正则表达式了:
var start = "märz märz";
var text = start.split(' ').map(function(el) {
return el.slice(0, 1).toUpperCase() + el.slice(1);
}).join(' ');
console.log(text); // "März März"
JSBin:
答案 1 :(得分:0)
这个怎么样:
var a = "märz märz, april mai oktober\nnovember februar\naugust";
function capitalize(string) {
var b = string.split(" ");
b.forEach(function(e, i, a) {
a[i] = e[0].toUpperCase() + e.slice(1);
if (a[i].indexOf("\n") > 0) {
a[i] = e[a[i].indexOf("\n") + 1].toUpperCase() + a[i].slice(a[i].indexOf("\n") + 2);
}
});
return b.join(" ");
}
document.write(capitalize(a));
答案 2 :(得分:0)
基于bergi的提示,代码必须编辑为:
event.value = event.value.replace(/(^|\s+)\S/g, function(m){ return m.toUpperCase();});
那段代码完全符合我的要求。
每行中的每个单词都是大写的。
感谢。