我今天问你一个小问题:
我必须在输入文本字段中使用js来控制大写/不使用大写:
期望输出:祖父很好
我不是JS的专家,我使用的是分割功能,这是我的代码:
$('#name').on('input change',function() {
var arr1 = $(this).val().split(/[- ]/);
var result1 = "";
for (var x=0; x<arr1.length; x++)
result1+=arr1[x].substring(0,1)+arr1[x].substring(1).toLowerCase()+" ";
var res1 = result1.substring(0, result1.length-1);
var _txt = res1.charAt(0).toUpperCase() + res1.slice(1);
$('#name').val(_txt);
});
该脚本有效,但我想输出在字符串中找到的真实分隔符,即使它是一个空格&#34; &#34;或连字符&#34; - &#34;。实际上我只能展示空间。我该如何解决?
实际输出:大父亲很好
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:0)
用户String.replace()
,带有RegExp和回调。
如果你知道你的分隔符是什么,你可以搜索所有不是分隔符的字符,并格式化它们:
var input = 'ègrand-Father is NièCe';
var d = '[^\s\-]'; // not space or dash
var result = input.replace(new RegExp('('+ d +')(' + d + '+)', 'g'), function(m, p1, p2, i) {
var end = p2.toLowerCase();
var start = i === 0 ? p1.toUpperCase() : p1;
return start + end;
});
console.log(result);
&#13;
如果目标浏览器支持它(Chrome确实支持)或您使用转发器(例如Babel(plugin)),则可以使用Unicode property escapes in regular expressions(\p
):
var input = 'ègrand-Father is NièCe';
var result = input.replace(/(\p{L})(\p{L}+)/gu, function(m, p1, p2, i) {
var end = p2.toLowerCase();
var start = i === 0 ? p1.toUpperCase() : p1;
return start + end;
});
console.log(result);
&#13;
答案 1 :(得分:0)
我不完全确定你的目标是什么,但让我们试一试。 这就是如何使所有非首字母小写
let sentence = "this is wRoNg SenTEnce."
sentence.split(" ").map(word => word.charAt(0) + word.slice(1).toLowerCase()).join(" ")
这就是你如何制作首字母资本:
let sentence = "also Wrong sentence"
sentence.charAt(0).toUpperCase()