Javascript - 增加字符串

时间:2015-09-17 08:54:34

标签: javascript string increment

我有一个看起来像这样的字符串

    id = 'CourseContent1_activityContent34169_question1_answer0_ac';

是否有一种更容易的方法来增加#34;问题1和#34;和"回答0"在字符串里面?我试图使用以下方法分离字符串的内容:

id = 'CourseContent1_activityContent34169_question1_answer0_ac';

idArray = id.split('_');

originalArray = idArray.slice();

if (idArray) {
  idArray.pop();
  for (i = 0; i < 2; i++) {
    idArray.shift();
  }
}

以上结果如下:

idArray = ["question1","answer0"];

但是最后的结果需要是一个字符串,我知道我以后可能需要连接它,所以我可以将它传递给另一个参数。我只需要隔离这两个数字,只增加那两个数字。我正在寻找一种更简单的方法来完成这项任务,但我还没有遇到过类似的事情。另外jQuery对我来说不是一个选择,因为我试图用javascript和控制台来完成这个。感谢您的帮助。

5 个答案:

答案 0 :(得分:0)

您可以使用正则表达式查找字符串“question1”并将其替换为“question2” - 或者更准确地说“问题{此处任何数字}”并替换为“问题{任何其他数字}”

var id = 'CourseContent1_activityContent34169_question1_answer0_ac'
var re = /question\d+/
var id2 = id.replace(re,"question2")

您可以对answer\d+

执行相同的操作

答案 1 :(得分:0)

你应该使用RegExp的替换功能:

请运行以下示例:

var id = 'CourseContent1_activityContent34169_question1_answer0_ac';
alert('before:\r' + id)

id = id.replace(/question([0-9]+).*answer([0-9]+)/, function(a, b, c) {
  return 'question' + (parseInt(b) + 1) + '_answer' + (parseInt(c) + 1)
  //    Using parseInt to convert string to number
})

alert('after:\r' + id)

答案 2 :(得分:0)

这是一种不那么冗长的方式:

var increment = function(_, prefix, n) { return prefix + (+n + 1) };
id.replace(/(question)(\d+)/, increment).replace(/(answer)(\d+)/, increment);

带括号的匹配(即捕获组)作为单独的args传递给替换函数,在那里你可以只增加它们并返回相应的前缀。

答案 3 :(得分:0)

function updateQA(question, answer) {
  return 'CourseContent1_activityContent34169_question1_answer0_ac'.replace(/^(.*question)(\d*)(_answer)(\d*)(.*)/gi, '$1' + question + '$3' + answer + '$5');
}

答案 4 :(得分:0)

你可以试试这个:

var id = 'CourseContent1_activityContent34169_question1_answer0_ac';
var incrementQuestion = function (id) {
 return id.replace(/question([0-9]+)/, function (val1, val2) {
     return "question" + (parseInt(val2) + 1)
 })   }

 var incrementAnswer = function (id) {
 return id.replace(/answer([0-9]+)/, function (val1, val2) {
     return "answer" + (parseInt(val2) + 1)
 }) }

然后使用:

递增
id = incrementAnswer(id);

id = incrementQuestion(id);