我是javascript的新手。我有这个输出:
rr73,rr73,rr73, r.
我希望能够显示用户ID的前四个字母和最后一个用户ID之前的字符。这样的事情:r,rr7323,Thu Jul 16 13:01:48 2015
第一个输出通常如下所示:
rr73, r
在这种情况下,我希望输出显示@q
我希望能够用?
标记替换@q,rr7323,Thu Jul 16 12:30:28 2015
:
rr73, ?
在这种情况下,我希望输出显示:@a
。
我还希望能够将A
替换为@a,rr7323,Thu Jul 16 11:52:12 2015
:
rr73, A
应该看起来像rr73, rr73, rr73
。
这是我的代码,它只显示用户ID if (label == 'edit.history@status') {
var names = [];
var pieces = tag.split(",");
// even number entries are the user:
// r,mm5830,Mon some date@r,pk5982, Tues some date
for (var i = 0; i < pieces.length;i++) {
if (i % 2 != 0) {
// and we only want first 4 characters
names.push(pieces[i].substring(-2, 4));
}
}
tags[label] = names.join(",");
$(document).off('click', '#saveBtn').on('click', '#saveBtn', function () {
saveQuestion(id);
});
答案 0 :(得分:0)
首先,JavaScript中的substring命令将任何负数视为0,因此您的子字符串代码实际上从0开始,即第一个字符,并继续4个字符。
您不能引用负子字符串,因为我们只有字符串。你之前把原来的字符串分成几块。
因此,您可能需要在pieces[i-1] +
中添加push()
才能使其正常运行。
我认为除了替换值之外,以下内容应该按预期工作。为此,您可能需要使用replace
函数并进一步编辑我添加的pieces[i-1]
字符串:
if (label == 'edit.history@status') {
var names = [];
var pieces = tag.split(",");
// even number entries are the user:
// r,mm5830,Mon some date@r,pk5982, Tues some date
var last = 0;
for (var i = 0; i < pieces.length;i++) {
if (i % 2 != 0) {
last = i; // change the last index to be the current one.
// and we only want first 4 characters
names.push(pieces[i].substring(0, 4));
}
}
var lastChar = pieces[last-1];
lastChar = lastChar.substring(lastChar.length-1);
if(lastChar == "q") {
names.push("?");
} else if (lastChar == "a") {
names.push("A");
} else {
names.push(lastChar);
}
tags[label] = names.join(",");