如何比较两个网址的最后一条路径是否匹配?

时间:2017-11-28 08:44:31

标签: google-sheets comparison

我尝试创建一个电子表格,让我知道两个网址的最后一个跟踪步骤是否匹配。 (如果您想知道:它用于重定向映射,因为当我有旧URL并将它们与新结构匹配时,最后一条路径往往保持不变。)

上述电子表格或多或少有效,可在此处找到:https://docs.google.com/spreadsheets/d/1m3E5NQYSUGe4Kxn4BrpcgWj4WhotKG88JCx93ER3U1c/edit?usp=sharing

我做了以下事情:

  1. 在两个单独的工作表中提取新旧网址(oldcrumb / newcrumb)
  2. 将这些工作表中的网址拆分为在每个“/”
  3. 分割的单独单元格
  4. 比较两张纸之间行中最后一个填充的单元格
  5. 不幸的是我的解决方案有点笨拙。对于大约600个初始行,我需要另外1200行,因为我使用2张不同的纸张,并且还使用拆分公式来获取最后一条路。

    此外,我刚刚对具有多个IF条件的尾随位置的特定范围(分割行表中的行I到H)进行了比较。如果URL是超短或超长,则“最后一个跟踪匹配?”中不会显示任何内容。行。

    同时在某些时候我会收到警告,因为我会在Google表格中达到最大可用单元格数量(大约200000左右?)。

    那么还有更精细/优雅的方式来做我在超级笨拙和沉重负载方法中所做的事情吗?

2 个答案:

答案 0 :(得分:1)

以下公式可以做到:

=regexreplace(A2, ".*/", "")=regexreplace(C2, ".*/", "")

在这里,regexreplace会删除最后一行(包括)最后一个斜杠,因为.*表示任意数量的任何字符。因此,在最后一次斜杠之后的尾部之间测试了相等性。

也可用作数组公式:

=arrayformula(regexreplace(A2:A11, ".*/", "")=regexreplace(C2:C11, ".*/", ""))

或允许输入范围中出现空行的数组公式:

=arrayformula(if(isblank(A2:A), "", regexreplace(A2:A, ".*/", "")=regexreplace(C2:C, ".*/", "")))

答案 1 :(得分:0)

我会使用lastIndexOf()slice()

的比较方法

类似的东西:

/**
 * Added for use as a custom function
 * @customfunction
 */
function compareurl (oldurl, newurl) {
  var a = oldurl.slice(oldurl.lastIndexOf("/") + 1);
  var b = newurl.slice(newurl.lastIndexOf("/") + 1);

  return (a == b) ? true : false;
}

找到最后一个/并从url中的最后一个标记创建一个新字符串进行比较

编辑注意到您可能没有使用应用脚本。仍然会使用Custom Function和上述方法。然后使用=compareurl()