如何在JavaScript中实现字符串操作
问题陈述是这样的:我有一份合同。每月续签时,合同名称应附加续签标识符。例如,开始时名称为myContract,然后在第一次续订时名称应为myContract-R1,下一次续订名称应为myContract-R2,依此类推。。每次续订时,名称应自动更改。那么在Jquery中,我该如何做呢 您如何获得续约号码?从日期开始计算,还是从数据库获取如何在JavaScript中实现字符串操作,javascript,jquery,Javascript,Jquery,问题陈述是这样的:我有一份合同。每月续签时,合同名称应附加续签标识符。例如,开始时名称为myContract,然后在第一次续订时名称应为myContract-R1,下一次续订名称应为myContract-R2,依此类推。。每次续订时,名称应自动更改。那么在Jquery中,我该如何做呢 您如何获得续约号码?从日期开始计算,还是从数据库获取 var renewal = 1, name = 'myContract', newname = name+'R'+renewal; 或者像 $
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处理字符串
另外,我这里有一个简单的reg exp,这对于你的例子来说并不具体(但它是有效的)。最好使用T.J.Crowder示例中的reg exp这是一个JavaScript问题,而不是jQuery问题。jQuery对JavaScript的内置字符串操作几乎没有添加任何内容 听起来像是您想要采用“myContract”或“myContract Rx”形式的字符串,并具有一个附加“-R1”(如果没有“-Rx”)的函数,或者增加其中的数字 没有捷径可走,你必须这么做。这是一个可行的草图,我希望它可以优化:
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
,否则它将解析修订号并增加它。您可以使用字符串连接运算符+
。哦,这太漂亮了。但在解析int时一定要包括基数。@T.J.克劳德:对。。。你会认为我现在应该学会记住这一点…:P我更新了密码。@Hussain:不用担心,很高兴这有帮助。再看看@Guffa的答案。大致相同,但表达方式不同(相当优雅)。