最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在JSON开始之前删除行首

IT培训 admin 5浏览 0评论

在JSON开始之前删除行首

我有此方法的错误,该错误将删除字符串中JSON之前的字符,例如此行的日志记录输出:

[Oct 2 21:37:03 ip-172-31-9-171 ubuntu:[“ opstop”]

所以我有此方法可以删除JSON之前的文本:

class TrimJSON {
  sliceStr(o: string) {
    const ib = o.indexOf('["');
    const iz = o.indexOf('{"');
    if (ib > 0 || iz > 0) {
      let i = Math.min(ib, iz);
      console.log({i,iz,ib});
      o = o.slice(i);
    }
    return o;
  }
}

等等

 console.log(
   new TrimJSON()
    .sliceStr('Oct  2 21:37:03 ip-172-31-9-171 ubuntu: ["opstop"]')
 )

将产生:']'

因为这是最后一个字符。原因是由于这些值:

{ i: -1, iz: -1, ib: 40 }

有什么好方法可以减轻这种情况吗?我的解决方案看起来很丑陋:

  sliceStr(o: string) {
    const ib = o.indexOf('["');
    const iz = o.indexOf('{"');
    if (ib > 0 && ib >= iz) {
      o = o.slice(ib);
    }
    else if(iz > 0 && iz >= ib){
      o = o.slice(ib);
    }
    console.log('sliced json-stream string:', o);
    return o;
  }
回答如下:

这假设字符串中始终有一个[“或{”,您可能想为不存在的字符添加一个条件,否则它将返回您所看到的最后一个字符,但这将在一种非常简洁的方式:

function trimJSON(log) {
  const i = log.indexOf('["') > -1 ? log.indexOf('["') : log.indexOf('{"');
  return log.slice(i);
}
console.log(trimJSON('Oct  2 21:37:03 ip-172-31-9-171 ubuntu: ["opstop"]'));
// ["opstop"]

仅为该方法创建类太复杂了。

在JSON开始之前删除行首

我有此方法的错误,该错误将删除字符串中JSON之前的字符,例如此行的日志记录输出:

[Oct 2 21:37:03 ip-172-31-9-171 ubuntu:[“ opstop”]

所以我有此方法可以删除JSON之前的文本:

class TrimJSON {
  sliceStr(o: string) {
    const ib = o.indexOf('["');
    const iz = o.indexOf('{"');
    if (ib > 0 || iz > 0) {
      let i = Math.min(ib, iz);
      console.log({i,iz,ib});
      o = o.slice(i);
    }
    return o;
  }
}

等等

 console.log(
   new TrimJSON()
    .sliceStr('Oct  2 21:37:03 ip-172-31-9-171 ubuntu: ["opstop"]')
 )

将产生:']'

因为这是最后一个字符。原因是由于这些值:

{ i: -1, iz: -1, ib: 40 }

有什么好方法可以减轻这种情况吗?我的解决方案看起来很丑陋:

  sliceStr(o: string) {
    const ib = o.indexOf('["');
    const iz = o.indexOf('{"');
    if (ib > 0 && ib >= iz) {
      o = o.slice(ib);
    }
    else if(iz > 0 && iz >= ib){
      o = o.slice(ib);
    }
    console.log('sliced json-stream string:', o);
    return o;
  }
回答如下:

这假设字符串中始终有一个[“或{”,您可能想为不存在的字符添加一个条件,否则它将返回您所看到的最后一个字符,但这将在一种非常简洁的方式:

function trimJSON(log) {
  const i = log.indexOf('["') > -1 ? log.indexOf('["') : log.indexOf('{"');
  return log.slice(i);
}
console.log(trimJSON('Oct  2 21:37:03 ip-172-31-9-171 ubuntu: ["opstop"]'));
// ["opstop"]

仅为该方法创建类太复杂了。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论