Javascript 如何将hypens添加到字符串(将其格式化为16位序列号)

Javascript 如何将hypens添加到字符串(将其格式化为16位序列号),javascript,Javascript,我使用了富灵javascript来生成随机的20位数字。我需要在每5位数字后添加hypen,以制作类似于给定示例的序列号格式 e、 g.DF347-VB895-98AP8-34NQ2 函数randomString(){ var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”; 变量字符串长度=20; var randomstring=''; 对于(var i=0;i只需每隔5次迭代添加一个连字符: 函数randomString(){ var char

我使用了富灵javascript来生成随机的20位数字。我需要在每5位数字后添加hypen,以制作类似于给定示例的序列号格式

e、 g.DF347-VB895-98AP8-34NQ2

函数randomString(){
var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”;
变量字符串长度=20;
var randomstring='';

对于(var i=0;i只需每隔5次迭代添加一个连字符:

函数randomString(){
var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”;
变量字符串长度=20;
var randomstring='';

对于(var i=0;i只需每隔5次迭代添加一个连字符:

函数randomString(){
var chars=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ”;
变量字符串长度=20;
var randomstring='';

对于(var i=0;i使用
match
将其拆分,并使用连字符将其连接起来,如下所示:

var randomstring = 'DF347VB89598AP834NQ2',
    withHyphens = randomstring
                    .match(/.{5}/g) // breaks it into 5-character strings
                    .join('-'); // rebuilds it with hyphen separators
alert(withHyphens); // DF347-VB895-98AP8-34NQ2
或者,正如亨特·麦克米伦所建议的那样,由于您正在动态构建字符串,所以只需在循环中每隔5次添加一个连字符

您还在回答中指出(旁注:这应该是对您的问题的编辑,而不是编辑),您需要附加
-XXXXX
。只需执行上述方法之一,然后

withHyphens += '-XXXXX';

使用
match
将其拆分,然后使用连字符
join
重新构建,如下所示:

var randomstring = 'DF347VB89598AP834NQ2',
    withHyphens = randomstring
                    .match(/.{5}/g) // breaks it into 5-character strings
                    .join('-'); // rebuilds it with hyphen separators
alert(withHyphens); // DF347-VB895-98AP8-34NQ2
或者,正如亨特·麦克米伦所建议的那样,由于您正在动态构建字符串,所以只需在循环中每隔5次添加一个连字符

您还在回答中指出(旁注:这应该是对您的问题的编辑,而不是编辑),您需要附加
-XXXXX
。只需执行上述方法之一,然后

withHyphens += '-XXXXX';

使用正则表达式替换:

randomstring = randomstring.replace(/.{5}(?!$)/g, '$&-');

负前瞻
(?!$)
阻止它在末尾添加连字符。

使用正则表达式替换:

randomstring = randomstring.replace(/.{5}(?!$)/g, '$&-');

负前视
(?!$)
会阻止它在末尾添加连字符。

使用子字符串拆分20位数字字符串如何?

var randnum = "12345678910111213145";
var serial = randnum.substring(0,4) + "-" + randnum.substring(5,9) + "-" + randnum.substring(10,14) + "-" + randnum.substring(15,19);

使用子字符串拆分20位数字字符串怎么样?

var randnum = "12345678910111213145";
var serial = randnum.substring(0,4) + "-" + randnum.substring(5,9) + "-" + randnum.substring(10,14) + "-" + randnum.substring(15,19);

或者您可以使用
(?!$)
谢谢,我更喜欢这个。回答不错,但人们真的喜欢使用comicbook cursewords来进行竞价吗?如果其他人能够阅读代码,我个人会使用@HunterMcMillen answer。同意。如果你已经在循环中添加了字符,那么很容易同时添加连字符。如果您必须将连字符添加到现有字符串中。@supertopi-没有人注意到Hunter的答案产生了错误的结果,并且实际上比其他答案更复杂,还是只有我?或者您可以使用
(?!$)
谢谢,我更喜欢这个。回答不错,但人们真的喜欢使用comicbook cursewords来进行竞价吗?如果其他人能够阅读代码,我个人会使用@HunterMcMillen answer。同意。如果你已经在循环中添加了字符,那么很容易同时添加连字符。如果您必须在现有字符串中添加连字符。@supertopi-没有人注意到Hunter的答案产生了错误的结果,实际上比其他答案更复杂,还是只有我?这是一个家庭作业问题?如果是,请给它贴标签。这是一个家庭作业问题吗?如果是,请给它贴标签。哦,天哪,不!只需将If条件放在添加子字符串,然后执行
if(i!==0&&i%5==0)
@adeneo谢谢,我知道有问题。哦,天哪,不!只需在添加子字符串之前放置if条件,然后执行
if(i!==0&&i%5==0)
@adeneo谢谢,我知道有问题。