javascript - 如何在逗号分隔的字符串中插入默认值?

标签 javascript

我有一组逗号分隔的字符串,如果任何字符串不是数值,我需要插入“(1)”。

"stack(2),flow,over(4),temp(7)"  Here insert default value to flow(1)
"stack(2),flow(3),over(4),temp"  Here insert default value to temp(1)
"stack,flow(3),over,temp"        Here insert default value to stack(1),over(1),temp(1) 

我有验证代码来验证并在需要时插入默认值。请帮助我如何在括号内插入默认值。

JavaScript 函数:

var case1 = "stack(2),flow(2),over(4),temp(7)"; // - true
var case2 = "stack(2),flow(3),over(4),temp(k)"; // - false
var case3 = "stack(2),flow(2),over(4),temp(0"; // - false
var case4 = "stack(2),flow(2),over(,temp)"; // - false
var case5 = "stack(2),flow(2),over(4)temp(8)"; // - false
var case6 = "stack(1),flow(7),over,temp"; // - true
var case7 = "stack(1),flow(7),OVER,Temp"; // - true
var case8 = "stack(1),flow(7),over_r,temp_t"; // - true

function testCases(str)
{
    var pattern = /^[a-z]+(?:\(\d+\))?(?:,[a-z]+(?:\(\d+\))?)*$/
    return pattern.test(str);
} 

上述函数适用于 jsfiddle 中的验证

最佳答案

tl;博士

使用String.prototype.splitString.prototype.join来处理字符串的每个部分。

详细信息

如果您想对字符串应用自定义修复,则需要将其拆分为多个部分,然后对其进行处理。工作完成后,将所有部分连接在一起。

实现

使用Array.prototype.map(警告:与 IE 8 及更低版本不兼容):
Demo on JSFiddle .

function testCases(str) {
  return str.split(',').map(function(s) {
    if (s.match(/^[a-z]+\(\d+\)$/i)) {
      // string is valid
      return s;
    } else {
      // you can do processing here based on the failure reason
      return s + '(1)';
    }
  }).join(',');
}

使用for循环(IE8兼容):

function testCases(str) {
  var parts = str.split(',');
  var i = parts.length;
  while (i--) {
    var s = parts[i];
    if (!s.match(/^[a-z]+\(\d+\)$/i)) {
      // string is invalid
      // you can do processing here based on the failure reason.
      parts[i] = s + '(1)';
    }
  }
  return parts.join(',');
}

关于javascript - 如何在逗号分隔的字符串中插入默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685715/

相关文章:

javascript - Javascript YouTube视频隐私状态更新API

javascript - typescript -在多维对象中查找匹配的键和路径

javascript - IIS 6 js 和 css 压缩不适用于 Firefox 14.0.1

javascript - 在按钮上单击带有确认警报框,取消时也提交查询

javascript - 如何修复覆盖不打开灯箱的 : image gallery, 图像

javascript - 如何在绑定(bind)顶点数组对象和缓冲区数据以在渲染时动态绘制时编写通用的 webgl 渲染循环?

javascript - 在 Ember 中,我可以将输入标签生成到组件而不破坏我的表单吗?

javascript - 当我从点击回调中调用它时,颜色框看起来不正确

javascript - 在 v-show 显示输入后将焦点设置在输入上

javascript - 如何使用 express node.js 打印到 html