我有一个看起来像这样的字符串
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和控制台来完成这个。感谢您的帮助。
答案 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);