簡體   English   中英

JS拆分多個定界符並將定界符轉換為輸入值

[英]JS Split multiple delimiters and get delimiters into input value

我今天要問你一個小問題:

我必須像這樣在輸入文本字段上實時控制大小寫/不使用js:

  • 整個字符串的第一個字符必須為大寫
  • 每個單詞的第一個字符(空格或連字符后)是自由的(允許小寫或大寫)
  • 所有nother字符必須小寫

期望的輸出:祖父很好

我不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM