[英]JS Split multiple delimiters and get delimiters into input value
我今天要問你一個小問題:
我必須像這樣在輸入文本字段上實時控制大小寫/不使用js:
期望的輸出:祖父很好
我不是JS專家,我使用的是split函數,這是我的代碼:
$('#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);
});
該腳本可以工作,但是我想輸出在字符串中找到的真實分隔符,即使它是空格“”或連字符“-”。 實際上我只能顯示空間。 我該如何解決?
實際輸出:祖父是尼斯
任何幫助,將不勝感激。
謝謝!
用戶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);
如果目標瀏覽器支持(Chrome支持),或者您使用諸如Babel( 插件 )之類的轉譯器,則可以在正則表達式 ( \\p
)中使用Unicode屬性轉義 :
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);
我不確定您的目標是什么,但是讓我們嘗試一下。 這樣可以使所有非首字母都變為小寫
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.