如何使用Javascript或Jquery增加字符串中的数字

How to increment number in string using Javascript or Jquery

本文关键字:字符串 数字 增加 Jquery 何使用 Javascript      更新时间:2023-09-26

我的文本区域的id是字符串,格式为

id='fisher[27].man'

我想克隆文本区域,增加数字,并将id作为fisher[28].man,并将其预先添加到现有的文本区域中。

有没有一种方法可以用jquery轻松地完成这项工作?

var existingId = $("#at textarea:last").attr('id');
var newCloned = lastTextArea.clone();
var newId = newCloned.attr('id');
//add the index number after spliting
//prepend the new one to 
newCloned.prepend("<tr><td>" + newCloned + "</td></tr>");

必须有更简单的方法来克隆、获取索引号、拆分和预处理。

我也试过用regEx 来做这件事

var existingIdNumber = parseInt(/fisher[('d+)]/.exec(s)[1], 10);

有人能帮我吗?

正确的正则表达式应该是这个

/fisher'['d+'].man/

这是一种提取id的方法。

id = text.replace(/fisher'[('d+)'].man+/g,"$1");
//Now do whatever you want with the id

类似地,可以使用相同的替换技术来获得递增的id,如:

existingId = 'fisher[27].man';
newId = existingId .replace(/('d+)+/g, function(match, number) {
       return parseInt(number)+1;
});
console.log(newId);

具有这两种用法的演示

jsFiddle演示

不需要所有额外的代码。更改此行:

var newId = newCloned.attr('id');

收件人:

var newId  = newCloned.attr('id').replace( /('d+)/, function(){return arguments[1]*1+1} );

这个问题公认答案的另一个简单解决方案:

'url1'.replace(/'d+$/, function(n){ return ++n }); // "url2"
'url54'.replace(/'d+$/, function(n){ return ++n }); // "url55"

非常干净易读。

我很惊讶这个简单的东西没有任何好的实现。所有的例子都忘记了数字前面有零的情况。下面的代码应该能解决这个问题。

// 'item001' => 'item002'
function increment_alphanumeric_str(str){
    var numeric = str.match(/'d+$/)[0];
    var prefix = str.split(numeric)[0];
    function increment_string_num(str){
        var inc = String(parseInt(str)+1);
        return str.slice(0, str.length-inc.length)+inc;
    }
    return prefix+increment_string_num(numeric);
}

示例:

> increment_alphanumeric_str('test09')
'test10'

唯一的缺点是,如果我们有像'test99'这样的东西,这将被打破。

如果您的Id具有此格式

id='fisher[27].man'

你可以做一些类似的事情

   var startIndex = newId.indexOf('[');
   var endIndex = newId.indexOf(']');
   var number = parseInt(newId.substr(startIndex + 1, endIndex - startIndex - 1));
   var incrementedId = number + 1;  // 28

其中

var newId = newCloned.attr('id');

使用正则表达式替换:可以很容易地做到这一点

var id = "fisher[27].man";
id = id.replace(/'[('d+)']/, function(match, number) {
    return '[' + (parseInt(number, 10) + 1) + ']';
});
// id is now "fisher[28].man"