Javascript 如果缺少字符串,如何插入括号和值?
这里我有一组带逗号的字符串,比如“stack,flow(2),over(4),temp(0)”,如果字符串没有开括号和闭括号值,我需要插入带(1)的字符串。堆栈(1) 因为我需要验证括号内的值应该是数字。我尝试了一些场景,但我需要帮助来插入(1)Javascript 如果缺少字符串,如何插入括号和值?,javascript,jquery,regex,Javascript,Jquery,Regex,这里我有一组带逗号的字符串,比如“stack,flow(2),over(4),temp(0)”,如果字符串没有开括号和闭括号值,我需要插入带(1)的字符串。堆栈(1) 因为我需要验证括号内的值应该是数字。我尝试了一些场景,但我需要帮助来插入(1) 以下是如果我理解正确,您希望在逗号前插入(1),如果没有括号组,则可以执行以下操作: var str = "stack,flow(2),over(4),temp(0)"; str = str.replace(/([^)]),/g, "$1(1),");
以下是如果我理解正确,您希望在逗号前插入
(1)
,如果没有括号组,则可以执行以下操作:
var str = "stack,flow(2),over(4),temp(0)";
str = str.replace(/([^)]),/g, "$1(1),");
结果:“堆栈(1)、流(2)、超过(4)、温度(0)”
如果还希望确保组中包含严格的正整数,可以这样做
var str = "stack,flow(2),flow(k),over(4),neg(-3),temp(0)";
str = str.split(',').map(function(s){
return s.replace(/(\((.*?)\))?$/, function(s,d,e) {
return '('+ (e>0?e:1)+')'
})
}).join(',');
结果:
“堆栈(1)、流(2)、流(1)、超过(4)、负(1)、温度(1)”
如果我正确理解,如果没有括号组,您希望在逗号前插入(1)
,则可以执行以下操作:
var str = "stack,flow(2),over(4),temp(0)";
str = str.replace(/([^)]),/g, "$1(1),");
结果:“堆栈(1)、流(2)、超过(4)、温度(0)”
如果还希望确保组中包含严格的正整数,可以这样做
var str = "stack,flow(2),flow(k),over(4),neg(-3),temp(0)";
str = str.split(',').map(function(s){
return s.replace(/(\((.*?)\))?$/, function(s,d,e) {
return '('+ (e>0?e:1)+')'
})
}).join(',');
结果:
“堆栈(1)、流(2)、流(1)、超过(4)、负(1)、温度(1)”
好吧,我的解决方案有点复杂,但更相关,例如,它适用于:
stacka(z),flow(2),over(4),temp(0),ccc
代码如下:
function convert(str) {
//ends with (num)
var regexObj = /\(\d+\)$/;
return str.split(',').map(function(p) {
return p + (regexObj.test(p) ? '' : '(1)');
}).join(',');
}
嗯,我的解决方案有点复杂,但更具相关性,例如,它适用于:
stacka(z),flow(2),over(4),temp(0),ccc
代码如下:
function convert(str) {
//ends with (num)
var regexObj = /\(\d+\)$/;
return str.split(',').map(function(p) {
return p + (regexObj.test(p) ? '' : '(1)');
}).join(',');
}
关于括号内数值的规则是什么?我不明白为什么是2,然后是4,然后是0?括号内的任何数字都应该大于0括号内的数值有什么规则?我不明白为什么是2,然后是4,然后是0?括号内的任何数字都应该大于0这只是我给出的堆栈示例,但任何字符串都可以带有括号外的数字,如堆栈、流(2)、over、temp以及许多带有逗号的字符串,而不仅仅是四个。没问题,这将适用于无限数量的字符串。但是这里缺少验证部分(括号必须包含整数)。但是最后一个地方没有插入临时1的(1)ie。它不应接受stacka(z),over(0)错误消息。2.如果有括号,则插入(1)。3.但最后一个位置没有插入(1)ie,例如temp@user2848031我仍然不确定确切的要求,但你能检查一下新版本吗?如果它不是你想要的,你能用字符串列表和相关的期望结果更新你的问题吗?这只是我给出的例子stack,但是任何字符串都可以带括号,比如stack,flow(2),over,temp,以及许多逗号的字符串,而不仅仅是四个。没问题,这将适用于无限数量的字符串。但是这里缺少验证部分(括号必须包含整数)。但是最后一个地方没有插入临时1的(1)ie。它不应接受stacka(z),over(0)错误消息。2.如果有括号,则插入(1)。3.但最后一个位置没有插入(1)ie,例如temp@user2848031我仍然不确定确切的要求,但你能检查一下新版本吗?如果不是你想要的,你能用字符串列表和相关的期望结果更新你的问题吗?它不应该接受stacka(z),超过(0)错误消息。如果有括号,则插入(1)。它不应该接受stacka(z),超过(0)错误消息。如果有括号,则插入(1)。