javascript只显示输出中的前4个字符

时间:2015-07-16 17:12:54

标签: javascript regex

我是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(",");

的前4个字母
$(document).off('click', '#saveBtn').on('click', '#saveBtn', function () {
    saveQuestion(id);
});

1 个答案:

答案 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(",");