【问题标题】:Failing 8/10 test cases while joining 2 portions of a path [duplicate]连接路径的 2 部分时失败 8/10 测试用例 [重复]
【发布时间】:2020-08-16 05:49:49
【问题描述】:

任务是编写一个函数来接收路径的两个部分并将它们连接起来。这些部分将使用“/”分隔符连接。可能只有一个分隔符,如果不存在,则应添加。

例子:

joinPath("portion1", "portion2") ➞ "portion1/portion2"

joinPath("portion1/", "portion2") ➞ "portion1/portion2"

joinPath("portion1", "/portion2") ➞ "portion1/portion2"

joinPath("portion1/", "/portion2") ➞ "portion1/portion2"

我的代码:

public class Challenge {
    public static String joinPath(String portion1, String portion2) {
        return (portion1.substring(portion1.length()-1) != "/" && portion2.substring(0,1) != "/") 
            ? portion1 + "/" + portion2 : 
            (portion1.substring(portion1.length()-1) == "/" && portion2.substring(0,1) == "/") 
            ? portion1.substring(0) + portion2.substring(1) : 
            portion1 + portion2;
    }
}

我知道代码看起来很复杂,但问题的要求是尝试在没有if-else 条件的情况下解决它。我不知道为什么我的代码几乎没有通过所有测试。

我认为我犯了一个愚蠢的错误。有人可以指出错误吗?另外,有没有更好的方法可以在不使用if-else 条件的情况下解决这个问题?

【问题讨论】:

  • 额外的/ 分隔符出现在给定字符串中的什么位置?
  • 你可以使用接口java.nio.file.Path吗?
  • 你用==比较两个字符串,试试equals()?

标签: java


【解决方案1】:

这个怎么样:

static String joinPath(String path1, String path2)
{
    return String.format("%s/%s", path1, path2).replaceAll("/+", "/");
}

我们在给定的任何路径之间插入一个“/”,然后将一个或多个“/”的字符串折叠成一个“/”。

测试:

portion1 portion2 : portion1/portion2
portion1/ portion2 : portion1/portion2
portion1 /portion2 : portion1/portion2
portion1/ /portion2 : portion1/portion2

【讨论】:

    【解决方案2】:
    public class Challenge {
    public static String joinPath(String portion1, String portion2) {
       return portion1.replace("/","") + "/" + portion2.replace("/","");
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2019-05-27
      • 2019-11-16
      • 2020-11-24
      • 2022-01-23
      • 2018-07-07
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      相关资源
      最近更新 更多