繁体   English   中英

如何在 JavaScript 中实现字符串操作

[英]How to achieve String Manipulation in JavaScript

问题陈述是这样的:我有一份合同。 每月续订时,合同名称应为 append 和续订标识符。 例如,开始时名称是myContract ,然后第一次续订名称应该是myContract-R1 ,下一个续订名称应该是myContract-R2等等。每次续订时,名称应该自动更改。 那么在 Jquery 我该怎么做呢?

这是一个 JavaScript 问题,而不是 jQuery 问题。 jQuery 对 JavaScript 的内置字符串操作几乎没有任何作用。

听起来您想采用“myContract”或“myContract-Rx”形式的字符串,并拥有一个附加“-R1”(如果没有“-Rx”)或增加那里的数字的function。

没有捷径可走,你必须这样做。 这是一个有效的草图,我希望它可以被优化:

function incrementContract(name) {
  var match = /^(.*)-R([0-9]+)$/.exec(name);
  if (match) {
    // Increment previous revision number
    name = match[1] + "-R" + (parseInt(match[2], 10) + 1);
  }
  else {
    // No previous revision number
    name += "-R1";
  }
  return name;
}

实时复制

您可以为此使用正则表达式:

s = s.replace(/(-R\d+)?$/, function(m) {
  return '-R' + (m.length === 0 ? 1 : parseInt(m.substr(2), 10) + 1);
});

模式(-R\d+)?$将匹配修订号 ( -R\d+ ) 如果有一个 ( ? ) 和字符串的结尾 ( $ )。

如果之前没有修订号,替换将返回-R1 ,否则它将解析修订号并增加它。

你如何获得续订号码? 从日期计算,还是从数据库中获取?

var renewal = 1,
    name = 'myContract',
    newname = name+'R'+renewal;

或者可能喜欢

$(function(){
function renew(contract){
    var num_re = /\d+/,
        num = contract.match(num_re);
    if (num==null) {
        return contract+'-R1';
    } else {
        return contract.replace(num_re,++num[0]);  
    }
}

var str = 'myContract';  

   new_contract = renew(str); // myContract-1
   new_contract = renew(new_contract); // myContract-2
   new_contract = renew(new_contract); // myContract-3

});

这里 jQuery 帮不了你。 纯 JavaScript 使用字符串

PS我这里有简单的reg exp,这对你的例子来说并不具体(但它有效)。 更好地使用 TJ Crowder 示例中的 reg-exp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM