如何在javascript中将字符串/数字格式化为自定义模式?

如何在javascript中将字符串/数字格式化为自定义模式?,javascript,Javascript,我有一个13位的值,比如1231234123412,我想把这个数字用点分割成下面的模式。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 结果值必须类似于123.1234.1234.12 如何使用javascript、angularjs甚至正则表达式将值拆分为4个块(############################?#?)呢?可以从正则表达式开始。您需要查找并替换原始值的内容,并将其替换为您喜欢的值 您可能需要这样的脚本: functi

我有一个13位的值,比如
1231234123412
,我想把这个数字用点分割成下面的模式
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

结果值必须类似于
123.1234.1234.12


如何使用javascript、angularjs甚至正则表达式将值拆分为4个块(############################?#?)呢?

可以从正则表达式开始。您需要查找并替换原始值的内容,并将其替换为您喜欢的值

您可能需要这样的脚本:

function addCommas(nStr)
{
    return nStr.substring(0,3) + "." + nStr.substring(3, 7) + "." + nStr.substring(7, 11) + "." + nStr.substring(11, 13);
}
片段

函数addCommas(nStr){
返回nStr子串(0,3)+“+nStr子串(3,7)+”+nStr子串(7,11)+“+nStr子串(11,13);
}
$(“#新#U编号”)。更改(函数(){
this.value=addCommas(this.value.replace(',','');
});
$(“#输入_编号”).keyup(函数(){
$('new#u number').val($('Enter#u number').val()).trigger(“change”);
});

输入号码:


格式化结果:
您可以从正则表达式开始。您需要查找并替换原始值的内容,并将其替换为您喜欢的值

您可能需要这样的脚本:

function addCommas(nStr)
{
    return nStr.substring(0,3) + "." + nStr.substring(3, 7) + "." + nStr.substring(7, 11) + "." + nStr.substring(11, 13);
}
片段

函数addCommas(nStr){
返回nStr子串(0,3)+“+nStr子串(3,7)+”+nStr子串(7,11)+“+nStr子串(11,13);
}
$(“#新#U编号”)。更改(函数(){
this.value=addCommas(this.value.replace(',','');
});
$(“#输入_编号”).keyup(函数(){
$('new#u number').val($('Enter#u number').val()).trigger(“change”);
});

输入号码:

格式结果:
你可以使用这个功能


您可以使用此函数。

您可以使用
子字符串()这样做。

var temp=“1231234123412”;
温度=温度子串(0,3)+“+”+温度子串(3,7)+“+温度子串(7,11)+”+温度子串(11,13);

窗口报警(温度)您可以使用
substring()
这样做:

var temp=“1231234123412”;
温度=温度子串(0,3)+“+”+温度子串(3,7)+“+温度子串(7,11)+”+温度子串(11,13);

窗口报警(温度)您可以使用纯JavaScript实现这一点。定义一个方法,您可以使用所需的任何长度和模式格式化任何字符串。第一个参数是带有占位符的字符串。0-12是占位符,必须放在{}内。第二个参数是包含要使用的值的字符串

请看下面的方法:

function formatWithPlaceholder(text, values){
  values = values.toString();
  var pattern = /\{\{|\}\}|{(\d+)}/g;
  var formattedString = text.replace(pattern, function(match, group){
      var value;
      if(match === "{{"){
          return "{";
      }
      if(match === "}}"){
         return "}";
      }
      value = values[parseInt(group, 10)];
      return value ? value.toString() : "";
  });
  return (values.length > 0) ? formattedString : "";
}
var resultString = formatWithPlaceholder("{0}{1}{2}.{3}{4}{5}{6}.{7}{8}{9}{10}.{11}{12}","1231234123412");

这里有一个问题:

您可以使用普通JavaScript来实现这一点。定义一个方法,您可以使用所需的任何长度和模式格式化任何字符串。第一个参数是带有占位符的字符串。0-12是占位符,必须放在{}内。第二个参数是包含要使用的值的字符串

请看下面的方法:

function formatWithPlaceholder(text, values){
  values = values.toString();
  var pattern = /\{\{|\}\}|{(\d+)}/g;
  var formattedString = text.replace(pattern, function(match, group){
      var value;
      if(match === "{{"){
          return "{";
      }
      if(match === "}}"){
         return "}";
      }
      value = values[parseInt(group, 10)];
      return value ? value.toString() : "";
  });
  return (values.length > 0) ? formattedString : "";
}
var resultString = formatWithPlaceholder("{0}{1}{2}.{3}{4}{5}{6}.{7}{8}{9}{10}.{11}{12}","1231234123412");
这是提琴:

您可以使用regexp:

var number = "1231234123412";
var temp = (number.substring(0,3) + "." + number.substring(3, 7) + "." + number.substring(7, 11) + "." + number.substring(11, 13)).replace('..', '');
console.log(temp);
因为如果number=“1231234”您将得到“123.1234”,而不是“123.1234..”

您可以使用regexp:

var number = "1231234123412";
var temp = (number.substring(0,3) + "." + number.substring(3, 7) + "." + number.substring(7, 11) + "." + number.substring(11, 13)).replace('..', '');
console.log(temp);

因为如果number=“1231234”您将得到“123.1234”,而不是“123.1234..”

最简单、最优雅的格式是使用正则表达式:

function fmt3442(str){
  var src = /^(\d{3})(\d{4})(\d{4})(\d{2})$/
  var dst = '$1.$2.$3.$4'
  return str.replace(src, dst)
}

最简单、最优雅的格式是使用正则表达式:

function fmt3442(str){
  var src = /^(\d{3})(\d{4})(\d{4})(\d{2})$/
  var dst = '$1.$2.$3.$4'
  return str.replace(src, dst)
}

这与angularjs无关-_-普通老的
javascript
应该可以工作看看
substring()
。这与angularjs无关-_-普通旧的
javascript
应该可以工作,看看
substring()
。OP要求的是
3 4 3 2
数字的位置,而不是普通的千位。@DanielCheung肯定会纠正它。给我几秒钟,谢谢大家。正则表达式看起来很完美,但对于我的小问题来说相当复杂。我更喜欢子字符串()。OP要求的是数字的位置,而不是普通的千位。@DanielCheung肯定会纠正它。给我几秒钟,谢谢大家。正则表达式看起来很完美,但对于我的小问题来说相当复杂。我更喜欢子字符串()。