【问题标题】:String.includes doesn't find substringString.includes 找不到子字符串
【发布时间】:2022-01-14 11:11:58
【问题描述】:

我有以下文字:

 LOG: time="2021-12-09T16:55:25+01:00" level=debug msg="????  GetLatestBlock called" blockHeight=3 blockID=ee98016d268630db54b814d18d0127edac8cc36f90d193c0c6f5fd4909bbd8b1
    ,LOG: time="2021-12-09T16:55:25+01:00" level=debug msg="????  GetAccountAtLatestBlock called" address=f8d6e0586b0a20c7
    ,LOG: time="2021-12-09T16:55:26+01:00" level=debug msg="️✉️   Transaction submitted" txID=5a46897e60f13ee68e11ef754983fefe9ec7bc8a2ca6079f0665e404138735e9
    ,LOG: time="2021-12-09T16:55:26+01:00" level=info msg="⭐  Transaction executed" computationUsed=6 txID=5a46897e60f13ee68e11ef754983fefe9ec7bc8a2ca6079f0665e404138735e9
    ,LOG: time="2021-12-09T16:55:26+01:00" level=debug msg="\x1b[1;34mLOG\x1b[0m \x1b[2m[5a4689]\x1b[0m \"Hello from Emulator\""
    time="2021-12-09T16:55:26+01:00" level=debug msg="\x1b[1;34mLOG\x1b[0m \x1b[2m[5a4689]\x1b[0m 0x1cf0e2f2f715450"
    time="2021-12-09T16:55:26+01:00" level=debug msg="\x1b[1;34mLOG\x1b[0m \x1b[2m[5a4689]\x1b[0m 0x179b6b1cb6755e31"
    time="2021-12-09T16:55:26+01:00" level=debug msg="????  Block #4 committed" blockHeight=4 blockID=5fd780a98baad6d30f66cf75e76c3e1c9398097a9bb2e3f239f0cd7e166f6932
    ,LOG: time="2021-12-09T16:55:26+01:00" level=debug msg="????  GetTransactionResult called" txID=5a46897e60f13ee68e11ef754983fefe9ec7bc8a2ca6079f0665e404138735e9

存储在一个名为transactionLogs的变量中(所以你看到的输出是console.log(transactionLogs)),它是一个字符串。

我想检查事务日志是否包含两个地址。一封来自 Alice 0x01cf0e2f2f715450 和一封来自 Bob 0x179b6b1cb6755e31

我的问题是,当我像这样调用includes 时(其中AliceBob 是字符串):

Alice; // 0x01cf0e2f2f715450
Bob; // 0x179b6b1cb6755e31
transactionLogs.includes(Alice); // false
transactionLogs.includes(Bob); // true

对 Alice 的搜索返回 false

我认为它与转义反斜杠有关,所以我尝试运行 transactionLogs.replace(String.fromCharCode(92), '') 但这并没有改变结果。

这里发生了什么?为什么includes 没有为 Alice 返回true

【问题讨论】:

  • 您为 Alice 提到的 Id,即 0x01cf0e2f2f715450 不在日志中,是吗?
  • 我在你的文本中找不到 0x01cf0e2f2f715450,我只看到一个 0x1cf0e2f2f715450(注意缺少 0)
  • Deepack 是正确的:日志中包含0x1cf...,因此搜索0x01cf... 将不起作用。
  • Alice 似乎是 0x1cf0e2f2f715450,而您正在寻找 0x01cf0e2f2f715450。记录 0x01cf0e2f2f715450 或返回 0x1cf0e2f2f715450 可能有什么问题?
  • 也许你可以transactionLogs.includes(parseInt(Alice, 16).toString(16))

标签: javascript arrays typescript


【解决方案1】:

为什么包括不为爱丽丝返回true

因为日志字符串中不存在该字符串:

const transactionLogs = `
 LOG: time="2021-12-09T16:55:25+01:00" level=debug msg="?  GetLatestBlock called" blockHeight=3 blockID=ee98016d268630db54b814d18d0127edac8cc36f90d193c0c6f5fd4909bbd8b1
    ,LOG: time="2021-12-09T16:55:25+01:00" level=debug msg="?  GetAccountAtLatestBlock called" address=f8d6e0586b0a20c7
    ,LOG: time="2021-12-09T16:55:26+01:00" level=debug msg="️✉️   Transaction submitted" txID=5a46897e60f13ee68e11ef754983fefe9ec7bc8a2ca6079f0665e404138735e9
    ,LOG: time="2021-12-09T16:55:26+01:00" level=info msg="⭐  Transaction executed" computationUsed=6 txID=5a46897e60f13ee68e11ef754983fefe9ec7bc8a2ca6079f0665e404138735e9
    ,LOG: time="2021-12-09T16:55:26+01:00" level=debug msg="\x1b[1;34mLOG\x1b[0m \x1b[2m[5a4689]\x1b[0m \"Hello from Emulator\""
    time="2021-12-09T16:55:26+01:00" level=debug msg="\x1b[1;34mLOG\x1b[0m \x1b[2m[5a4689]\x1b[0m 0x1cf0e2f2f715450"
    time="2021-12-09T16:55:26+01:00" level=debug msg="\x1b[1;34mLOG\x1b[0m \x1b[2m[5a4689]\x1b[0m 0x179b6b1cb6755e31"
    time="2021-12-09T16:55:26+01:00" level=debug msg="?  Block #4 committed" blockHeight=4 blockID=5fd780a98baad6d30f66cf75e76c3e1c9398097a9bb2e3f239f0cd7e166f6932
    ,LOG: time="2021-12-09T16:55:26+01:00" level=debug msg="?  GetTransactionResult called" txID=5a46897e60f13ee68e11ef754983fefe9ec7bc8a2ca6079f0665e404138735e9
`;

const Alice = `0x01cf0e2f2f715450`;
const Bob = `0x179b6b1cb6755e31`;

console.log({
  Alice: transactionLogs.includes(Alice),
  Bob: transactionLogs.includes(Bob),
});

【讨论】:

    【解决方案2】:

    您似乎正在搜索交易日志中错误打印的十六进制地址。

    我认为您应该更改事务日志逻辑以避免在记录时切断地址中的前导0。

    否则,您必须从正在搜索的地址中删除前导零,即使用

    transactionLog.includes('0x' + parseInt(Alice, 16).toString(16))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2019-11-19
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      相关资源
      最近更新 更多