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

时间:2012-03-20 04:10:35

标签: javascript

我的textarea的id是字符串,格式为

  

ID = '费舍尔[27] .MAN'

我想克隆textarea并增加数字并将id作为fisher[28].man并将其添加到现有的textarea。

有没有办法用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);

有人可以帮我这个吗?

6 个答案:

答案 0 :(得分:12)

正确的正则表达式就是这个

/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);

Demo with both usage

答案 1 :(得分:3)

jsFiddle Demo

不需要所有额外的代码。改变这一行:

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

要:

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

答案 2 :(得分:1)

如果您的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');

答案 3 :(得分:1)

this question's accepted answer的另一个简单解决方案:

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

非常干净和可读。

答案 4 :(得分:0)

您可以使用正则表达式替换轻松完成此操作:

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

答案 5 :(得分:0)

我很惊讶这个简单的事情没有任何好的实现。所有的例子都忘记了在数字之前有零的情况。下面的代码应该注意这一点。

// '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'的内容,这将会中断。