在字符串中的第一个数字前面添加空格

时间:2017-08-17 09:23:52

标签: javascript jquery

我需要在字符串的第一个数字前面添加一个空格,除非已经有一个空格,除非该数字是字符串中的第一个字符。

所以我写了这个JS代码:

document.getElementById('billing:street1').addEventListener('blur', function() {

  var value = document.getElementById('billing:street1').value;
  var array = value.match(/\d{1,}/g);

  if (array !== null) {
    var number = array[0];
    var index = value.indexOf(number);
        if(index !== 0){
        var street = value.substring(0, index);
            var housenumber = value.substring(index);
            if (street[street.length - 1] !== ' ') {
              document.getElementById('billing:street1').value = street + ' ' + housenumber;
             }
          }
  }
}); 

Fiddle

它工作正常,但我觉得这可能是一个更聪明,更紧凑的方式。

另外,欢迎JQuery建议,我对它不是很熟悉。

2 个答案:

答案 0 :(得分:1)

试试这个:



const addSpace = (str) => {
   return str.replace(/(\D)(\d)/, "$1 $2")	
}
    
console.log(addSpace("12345"))     // "12345"
console.log(addSpace("city12345")) // "city 12345"
console.log(addSpace("city"))	   // "city"




(\D)捕获非数字

(\d)捕获一个数字

所以(\D)(\d)表示:非数字后跟数字

我们用"$1 $2" = captured1 + space + captured2

替换

答案 1 :(得分:0)

您只能使用正则表达式来完成此操作。例如:

var s = "abcde45";

if(!s.match(/\s\d/)){

  s = s.replace(/(\d)/, ' $1');  

}
console.log(s); // "abcde 45"

UPD:当然,如果您的字符串语法错误(例如内部没有数字),那么该代码将无效。