JS拆分多个分隔符并将分隔符转换为输入值

时间:2018-03-20 09:43:16

标签: javascript arrays split

我今天问你一个小问题:

我必须在输入文本字段中使用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;。实际上我只能展示空间。我该如何解决?

实际输出:大父亲很好

任何帮助都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

用户String.replace(),带有RegExp和回调。

如果你知道你的分隔符是什么,你可以搜索所有不是分隔符的字符,并格式化它们:

&#13;
&#13;
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;
&#13;
&#13;

如果目标浏览器支持它(Chrome确实支持)或您使用转发器(例如Babel(plugin)),则可以使用Unicode property escapes in regular expressions\p):

&#13;
&#13;
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;
&#13;
&#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()