在一些随机数字后的字符串中添加空格

时间:2019-02-11 13:39:43

标签: javascript jquery arrays string

我正在尝试在用户输入时在输入值中添加空格,它适用于常量数字,例如4个字母之后或5个字母之后。但是我无法设法在某些数字后动态添加空间。

例如

如果用户键入 1234567890

块: [3,3,4]

预期输出: 123 456 7890


如果用户键入 1234567890

块: [3,2,2,3]

预期输出为: 123 45 67 890

2 个答案:

答案 0 :(得分:1)

根据用户类型处理输入可能很棘手。

尽管并不完美,但一种解决方案是计算预期结果,然后将其与当前结果进行比较。如果它们不同,则使用计算出的输入更新实际输入。

下面是一个简单的示例,..它甚至可以处理用户粘贴数字的情况。 下面的一个问题是,如果说您在中间插入数字,则是光标位置,但这可以通过记住光标位置并恢复来解决。

const splits = [3,3,4];
$('#a').on("input", function(){
  let count = 0;
  const breaks = splits.map(m => { const ret = m + count; count += m; return ret; });
  const a = this.value.split("").filter(f => f !== ' ');
  const s = a.map((m, ix) => {
    if (breaks.includes(ix + 1)) return m + " "
    else return m;
  }).join("");
  if (this.value.trim() !== s.trim()) this.value = s;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="a"/>

答案 1 :(得分:0)

尝试以下代码

function splitValue(value, index) {
    return value.substring(0, index) + " " + value.substring(index);
}
var test=[3,3,4];
var secondVar = '';
var firstVar = '1234567890';
for(let i = 0; i < test.length; i++){
  var TestVar = splitValue(firstVar, test[i]);
  secondVar = secondVar + " " + TestVar.split(" ")[0];
  secondVar=secondVar.trim();
  if(i == 0)
	firstVar = firstVar.replace(secondVar.trim(),'');
  else
  firstVar = firstVar.replace(secondVar.split(' ')[i + 1],'');
}
console.log(secondVar);