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

javascript only showing first 4 character from the output

本文关键字:4个 字符 显示 输出 Javascript      更新时间:2023-09-26

我是javascript新手。我有这样的输出:
a,rr7323,Thu Jul 16 11:52:12 2015@q,rr7323,Thu Jul 16 12:30:28 2015@r,rr7323,Thu Jul 16 12:36:11 2015

我希望能够显示用户id的前四个字母和最后一个用户id之前的字符。像这样:rr73,rr73,rr73, r.

第一个输出通常是这样的:
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

这是我的代码它只显示了用户id的前4个字母rr73, rr73, rr73

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

首先,JavaScript中的substring命令将任何负数视为0,因此您的子字符串代码实际上从0(第一个字符)开始,并继续处理4个字符。

不能引用负子字符串,因为我们只有该字符串。你之前把原来的琴弦弄断了。

因此,您可能需要在push()中添加pieces[i-1] +以使其工作。

我相信下面的工作应该如预期的那样,除了替换值。为此,您可能需要使用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(",");